- ベストアンサー
$_POSTでの文字化け
[開発環境] language : PHP Version 4.3.1 system : Windows NT localhost 5.1 build 2600(xp pro) httpd : AN HTTP Daemon Version 1.42h [本番環境](j-navi) language : PHP Version 4.1.2 system : FreeBSD 4.5-RELEASE httpd : apache_1.3.27 開発環境下で作成したスクリプトを本番環境に持っていくと、POSTされたデータが文字化けを起こします。$_POST[moji]で取得したデータをテキストファイルに吐き出す仕組みなんですが、どうもこの時点で既に文字化けを起こしているようなんです。文字化けを起こしたPOSTデータをテキストに吐くので、その後は文字化けを起こしたデータをそのまま読み出し綺麗にブラウザに表示します。 もちろん開発環境ではまったく問題なくスクリプトは動いています。 随分スクリプト自体は書けるようになってきたんですが、このあたりの設定といいましょうか、ダブルバイトの文字の扱いがよく理解できていません。 それゆえ、何の情報をお伝えすればよいのかも検討つきません。わかっているのは、文字化けをするそれだけなんです。 どうかヒントを下さい。アタリをつけることもできてないので本当に途方にくれています。よろしくお願いします。 Configure Command './configure' '--with-mysql=/usr/local/mysql' '--with-apache=../apache_1.3.27' '--enable-track-vars' '--enable-xslt' '--with-xslt-sablot' '--enable-mbstring' '--enable-mbstr-enc-trans' magic_quotes_gpc on http input encoding translation enabled mbstring.detect_order no value mbstring.http_input no value mbstring.http_output no value mbstring.internal_encoding no value mbstring.substitute_character no value
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
$_POST[moji] で受け取った時点で文字化けしているのであれば 送信フォーム側の文字コードと 表示側の文字コードが異なっている可能性が高いと思います サーバにアップロードした段階で文字コードが 変わっている、改行コードが変わっていることはありませんか?
その他の回答 (1)
- angband
- ベストアンサー率51% (86/168)
PHPでのマルチバイト文字関係の設定が、開発環境と本番 環境で異なっているためではないでしょうか? これらの設定はPHPのconfigureスクリプトがあるトップ ディレクトリに php.ini-distというファイルはありま せんか?これを自分でコピーして、設定を行います。 マルチバイト関係の設定はせいぜい6個くらいしかありま せんし、以下のURLにSJISの場合とEUCの場合の設定例が 書いてあります。 または手っ取り早く、本番環境からphp.iniをコピーして くればよいのではないでしょうか?
お礼
ありがとうございます。 手っ取り早く、コピーしたいのですが、なにせレンタルなもので手が出せません。 バージョン等々の違いが顕著に影響するのは何とかして欲しいです。Perl5の方が楽ですよね。
お礼
ありがとうございます。 これからEUCに全てコンバートかけて処理していきます。ただ、なんとなくうちのレンタル鯖の問題の気もしています。よそ様が作られたスクリプトも同様の動きをしていることが判明しました。
補足
お世話になります。 色々と試してみた結果、結局EUC-JP・SJISの問題でした。 本当にお世話おかけしました。ありがとうございました。