[PHP-users 15126]Re: PHPの文字コードについて
kohara
skohara @ fb3.so-net.ne.jp
2003年 5月 8日 (木) 17:45:22 JST
小原です。
桝形様、山本様ありがとうございます。
> > CGI版との事ですので、確認ですが、CGIを起動するユーザーが
> > php.iniを読み込めるかどうか。。。
> >
> > 前にコマンドラインで、CGI版を実行した時に、php.iniにリード権
> > すらない状況で、設定が全く反映されていなかった時があります。
> >
> > その時は、php.iniにリード権を付与してもらって解決しました。
>
> もう一点、CGI版PHPで、phpinfoを表示した際に、
>
> Configuration File (php.ini)
>
> で表示されている、php.iniファイルの位置と、実際にphp.iniが
> 置いてある位置は同一でしょうか?
php.iniのパーミッションは644で、phpinfo()で表示されるConfiguration File
と実際の場所も同じ場所ですので特に問題はないようです。
本屋に行って調べましたが、インストールや設定について詳細に記述された本
がなくってだめでしたね(w)。ましてや、PHP4.3以降など・・・。
それで、本日も色々試してみたのですが、どのタイミングか文字化けが解消
されました!試行錯誤やっていましたので、明確に変えた個所がわかりませ
んが、最終的なphp.iniの設定項目を列記させていただきます。
php.iniの内容
------------------------------------------------
default_charset = SJIS
output_buffering = On
output_handler = mb_output_handler
safe_mode = On
register_globals = Off
magic_quotes_gpc = Off
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.func_overload = 0
mbstring.script_encoding = auto
------------------------------------------------
テスト用スクリプト
------------------------------------------------------------
テスト用に作成したスクリプトには、
mb_http_output('Shift_JIS');
ob_start('mb_output_handler');
のような個別に上書き認識させるようなコードは全て削除。
テスト内容(以下のテストでは問題ありませんでした)
※ ファイルは全てSJIS、EUC共に試しています。
・HTMLからのPOST送信で受取った値を表示
・GDBMに保存した内容を引き出して結果出力
・ラッパー関数(mb_send_mail)を利用してのメール送信
------------------------------------------------------------
mbstring.script_encoding をShift_JISやSJIS固定にすると一致する文字
コードで記述していても何故か文字化けが発生してしまいました。原因は
よくわかりません・・・。
autoにしたら、SJISコーディングでもEUCコーディングでも両方文字化け
なく処理することができました。mb_send_mailラッパーのような自動エン
コードされるような関数も問題なく動作するのを確認しています。
しかし、昨日mbstring.script_encoding = autoを設定してうまく動かな
かったのに、今日動くというのは何かその他の要因もあるかもしれません
ので、調査してみます。
途中でバグと決め付けてやめるとこでした(w)。
原因がわかりましたらまた投稿させていただきます。
ほんとうにありがとうございました。今日はよく寝られそうです。
PHP-users メーリングリストの案内