#この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューターphp ajax で中国語の文字化けを取得する解決策: 1. 「iconv('utf-8','gb2312',$_POST['Data']);)」コードを実行します; 2. データベースからPHP経由 漢字を読み取ってjson形式に変換するだけです。
php ajaxで中国語文字化けが発生する場合は?
PHP の AJAX アプリケーションにおける中国語の文字化けの解決方法
Web アプリケーション開発では中国語の文字化けがよく発生します!今日は、主にアイデアを整理します:文字化けが発生するケースのほとんどは、AJAX を実行するときに遭遇するものです!データベースから直接読み取る場合はコーディングの問題が発生しないためです~ 1. フロントエンド JS からバックエンドにデータを送信するとき AJAX データが送信されるとき、基礎となる xmlHttprequest を直接使用するか、jQuery の ajax を使用するかに関係なく、ajax は utf- 8 をエンコードして送信します! ページが UTF-8 であれば問題ありません! 渡された中国語データは文字化けしません! GB2312 の場合は問題が発生します! GBK を UTF-8 に変換してバックグラウンドに送信すると、バックグラウンドで直接受信したデータが文字化けします!(解決策: バックグラウンド言語が PHP の場合、iconv('utf-8','gb2312 ',$_POST['Data ']);)原理は非常に単純です。バックグラウンドでの直接受信は utf-8 で、ページはすべて GBK であり、受信したデータを変換して戻すだけです。 GBK!この時点ではデータベース操作を行ってください!データベースに保存されるものは通常の中国語文字である必要があります! 2. 背景ページには、データが保存されていることが示されています。データベースには漢字が含まれています。この時点で JS フロント デスクに送り返される文字です。PHP ページはデータベースから通常の漢字を読み取り、AJAX 経由で送り返したいと考えています~それが返された場合、データは何も処理せずに文字列の形式で直接返されます! これは問題ありません! 中国語のすべてが通常どおりフロント ページに表示されます! しかし、私たちは通常、バックグラウンド データをパッケージ化する必要があります! そうしないと、フロント デスクで受信したデータが扱いにくくなります!PHP の場合は、通常は JSON を使用して送信します! このように、フロントエンド JS に渡されるデータは、解凍して操作するのが非常に簡単です!PHP バックグラウンドで json 変換操作を実行するときに問題が発生します! json を変換すると、次のことがわかります。データベースから読み取った中国語に NULL またはその他の異常な状態が表示されます。これは、JSON がエンコーディングのみをエスケープするためです! どのようなエンコーディングをエスケープするかは気にしません!とにかく、JSON は中国語に変換すると文字化けします~~ 解決策は次のとおりです:function arrayRecursive(&$array, $function, $apply_to_keys_also = false) { static $recursive_counter = 0; if (++$recursive_counter > 1000) { die('possible deep recursion attack'); } foreach ($array as $key => $value) { if (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } $recursive_counter--; } function JSON($array) { arrayRecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json); } $json_string=JSON($data); //$obj = json_decode($json_string); print_r($json_string);これらの処理後、バックグラウンド PHP によってデータベースから読み取られた中国語の文字が正常に json に変換されたことがわかります。形式も中国語表示も正常です! もちろんこの時フロントが受け取るデータはJSON形式で中国語表示も正常です! わかりました~~これらがアイデアです~オンラインには多くの方法があります!少し混乱します~重要なことはアイデアを覚えておくことです!それから、どの関数を使用するかによって異なります。関連する問題を解決するには、任意の方法を使用してください。エンコーディングの問題! JS フロントエンド AJAX をトランスコードする必要があるのは面倒です! そしてバックグラウンドでデコードされます! 一部のものは 2 回トランスコードする必要さえあります! 私が今書いていることは次のとおりですPHP バックグラウンド言語コードの場合はすべて有効です。 フロント デスクの GBK であっても、トランスコーディング操作には使用されません。関連するすべての変換は、バックグラウンドの PHP コードでのみ行われます。!!
推奨される学習: 「
PHP ビデオ チュートリアル 」
以上がphp ajaxで中国語文字化けが発生した場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。