- 締切済み
AJAXとPHPの全角文字の受け渡し
こんにちは教えてください。 AJAXからPHPを呼んで、PHPから全角文字を受け取ると文字化けしてしまいます。いずれも文字コードはSJISです。例えば下のような感じです。(AsyncRequest()はXMLHttpRequestのオブジェクトを作って返す関数です) 文字化けの原因は何でしょうか? /************************************* JavaScript側 *************************************/ var Async = AsyncRequest(); Async.open( "GET" , "test.php ); Async.send( null ); Async.onreadystatechange = function(){ if( Async.readyState == 4 && Async.status == 200 ){ alert( Async.responseText ); } } /************************************* test.php側 *************************************/ <?PJP Print( "こんにちは" ) ; ?>
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- nobuzoh0407
- ベストアンサー率0% (0/0)
私は既存のシステムがEUCでつくられておりUTF-8にするのがめんどくさくてここにきました。 かなり時間経ってますが、 いまだにここに辿り着く私のようなものもいるので解決方法を記します。 今回の質問の場合ですとphp側で <?php Print(mb_convert_encoding("こんにちは",'UTF-8','SJIS')) ; ?> という具合にSJISをUTF-8に変換して戻せばキチンと表示されました。 また、逆に、phpに対して全角文字を渡す場合には、 参考URLにあるように、ecl.jsという便利なjsファイルがあるので EscapeSJISなどをつかうと"(株)"などの特殊な文字でもphpへうまく渡せました。 ajax、php間の全角文字のやり取りでは、そのほかに javascript:encodeURI php:urldecode などがキーワードになるかと思います。
- hrm_mmm
- ベストアンサー率63% (292/459)
私は、以下のサイトを参考にして、AJAXとperlの通信プログラムをつくりました。 結論は、JavaScriptがutf8しか解釈しないので、それに合わせる以外にないようです。 JavaScriptを記述しているhtmlもurf8で保存し直す必要があります。 http://allabout.co.jp/career/javascript/closeup/CU20050430A/index.htm
- public_sa
- ベストアンサー率52% (13/25)
過去私も#1さん同様UTF-8を採用しました。 Linux系のディストリビューションのOSで PHPを動かしていたので何もかも文字コードはUTF-8 でってな感じでやってました。 ほんとに考えることが1つ減ります。 そのときにだったかな?使ってたコードが見つかりましたので 出力部分を示します。 $message = "日の丸弁当梅干抜きで"; $data = rawurlencode($message); //出力charsetをutf-8に mb_http_output('UTF-8'); //出力 echo($data);
- athanasius
- ベストアンサー率37% (361/964)
私がprototype でAJAXを使ったときは、文字コードはすべてUTF-8にしましたね。 XML では、EUCもSJISも使わないほうが経験的に無難だったからなんですけど。 私なら、他のコンテンツも含めてUTF-8にします。 考えることが減りますから。 test.php側で返す文字をUTF-8に変換すれば良いだけかもしれません。