[PHP-users 32047] php+mysql+PrototypeをEUC-JP環境で運用したい。

高橋政利 takahashi @ hoshino-dk.co.jp
2007年 4月 27日 (金) 11:57:26 JST


高橋です。

アドバイスを頂いた皆様、大変ありがとうございました。
解決には至ってませんが、皆さんのアドバイスを元に色々と試してみました。

単純に文字コード変換であれこれするだけでは、ダメそうな感じです。
PHP.iniの設定なんかも今一度見直しが必要となるようで、じっくりと検討すれ
ば解決できそうですが、EUC-JPでAjaxを運用するには不安が残ります。
また、PHP.iniの設定を変更すると、他のプログラムの挙動にも影響しそうで単
純では無いようです。構築当時はMySQLもUTF-8を扱えなくEUC-JPで統一した方が
良いと、様々なサイトや書籍で紹介されていましたのでそれに従ったのですが、
最近の動向とかAjaxの本運用など将来的な事を考えますと、どうやらUTF-8に移
行した方が得策な時期になって来たように思えます。
どうせPHP.iniを見直すのであれば、この際UTF-8に移行したいと思います。

いろいろとアドバイスありがとうございました。

まつやま様
>ここで、$_GET['input_data']の文字コードをmb_detect_encodingで
>きちんと把握してみたらどうでしょう?


久保様
>$file = "example.txt";
>if(!file_put_contents($file,$_GET['input_data'])) {
>  file_put_contents($file,"データを受け取れず");
>}
>とでもして、実際にどんな値が渡ってきているか調べてみてはいかがでしょう。

想定及びPHP.iniの設定の通り、
半角英数ではASCII
マルチバイト文字列ではEUC-JP
で帰ってきます。もちろん文字は化けています。
マルチバイトの場合、Ajaxにてサーバー側のPHPに値を引き渡したときに意図し
た入力値ではなくUTF-8に文字化けした入力値を「ユーザーが入力したEUC-JPコー
ドの文字」として受け取っている様です。(かなり推測ですが、どちらにしても
この段階で文字化けが発生しているようですので、PHP.iniでなんとか整合する
しかないのかと。)
一度UTF-8に化けていますのでソースのいずれかの場所でEUC-JPに変換しようと
しても、「??」になってしまっては変換しようがない(のかな)と思っています。


皆様、本当にありがとうございました。






PHP-users メーリングリストの案内