※ ChatGPTを利用し、要約された質問です(原文:【PHP,JavaScript】文字が誤変換される)
【PHP,JavaScript】文字が誤変換される
このQ&Aのポイント
JavaScriptでPHPにJSONデータを送信している際、文字が誤変換される問題が発生しています。
JavaScriptのExt.util.JSON.encodeメソッドが文字列を誤変換している可能性があります。
またはPHPの$_REQUEST変数が文字列を正しく受け取れていない可能性も考えられます。
【PHP,JavaScript】文字が誤変換される
以下は、プログラムの一部でJavaScriptからPHPにJSONデータを送信する処理です。
引数を渡すJavaScript側(Extjsライブラリを利用)のプログラム
// Ajaxリクエスト処理
Ext.Ajax.request({
url: "php/updatedata.php",
success: handleSuccess,
failure: handleFailure,
params: { data: Ext.util.JSON.encode(data) } // パラメータをJSON形式にして送信
});
配列dataの中身は「data[0] = 3,data[1] = パソコン」となっています。
Ext.util.JSON.encode(data)により配列dataをJSONに変換して
受信するPHP側のプログラム:updatedata.php
JavaScriptで渡したJSONを$_REQUEST['data']で受信して中身を見ると以下のようになっています。
if (isset($_REQUEST['data'])) {
$tmp = $_REQUEST['data'];
【受信したJSONデータの中身】
[{"id":"3","name":"繝代た繧ウ繝ウ"}]
「パソコン」という文字列が「繝代た繧ウ繝ウ」という文字列に変換されてしまっています。
Extjs側の「Ext.util.JSON.encode」が悪いのでしょうか、それともPHP側の「$_REQUEST」が悪いのでしょうか。はたまた何か別の原因があるのでしょうか。
ちなみに、環境は以下のようになっています。
WindowsXP,Windows7(両方とも同じ結果になってしまいました。)
PHP5.3.1
Ext3.3.0
以上、よろしくお願い致します。
お礼
回答ありがとうございました。 HTML,PHPの文字コードの方を見直してみたいと思います。