中国語をフォームで送信すると文字化けしないのですが、ajaxで送信すると文字化けしてしまう原因は何でしょうか?
私の理解では、ソースコードを書くときは通常メモ帳を使用し、保存するときはデフォルトでANSIエンコーディングを使用します。「" または "header('Content-Type:text/html;charset=UTF-8');" は Web ページのエンコーディングを指定するため、そのエンコーディングは " GB2312」。フロントエンドがバックエンドにデータを送信するときに、フォームを使用して送信すると、フロントエンドとバックエンドは「GB2312」エンコードを使用して通信し、ajax を使用して送信すると文字化けが発生しません。フロントエンドの「GB2312」から送信されるエンコーディングを「UTF-8」にしてバックエンドに渡し、バックエンドから返された受信データを「UTF-8」として扱い、「GB2312」に変換します。このようにフロントエンドページに表示すると文字化けが発生します。
図に示すように:
そのため、コード化けを解決するには、データのエンコード変換をバックグラウンドで実行する必要があります。バックグラウンドで受信したデータは、PHPのmb_convert_encoding(「変換対象のデータ」、「gb2312」)を使用して変換されます。 、「UTF-8」) に変換され、データベースに保存されます。バックグラウンドからフロントに返される中国語データも、mb_convert_encoding("返されるデータ", "UTF-8", "gb2312") を使用して変換して返される必要があります。