[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 メーリングリストの案内