[PHP-users 32820] Re: script_encodingとinternal_encodingの違い (was Re: Re: 半角カタカナのファイルを require するとエラー)

shin-1 @ ca2.so-net.ne.jp shin-1 @ ca2.so-net.ne.jp
2007年 11月 6日 (火) 16:11:21 JST


shin-1です。

goungounさん、あさかわさん、ありがとうございます。
追い込みで2日ほどML読めませんでした><;

internal_encodingは、PHPが変数内部で持っているバイト列
を mb_ 関数がデフォルトとして何のエンコードで日本語文字
として処理するか。http_inputやhttp_outputとの変換にも適用。
(ファイルやDBへはinternal_encodingがそのまま出力される)

script_encodingは、スクリプトをinternal_encodingとは違う
エンコードで書きたい場合の指定。
スクリプトから文字定数を変数へ代入した際はinternal_encoding
へ自動変換される。
(スクリプトのphpタグ外に記述されているHTMLも同様)
ただしscript_encodingが有効となるのは、--enable-zend-multibyte
でコンパイルされたPHPのみ。

ということですね。よくわかりました。

ちょうど、政治的理由で様々なエンコードがまざったサイトを
手がけていて、試行錯誤でやっていたことが、明瞭になりました。

あと念のための確認なのですが・・

ここは前後の文面からすると、script_encodingと読み替えれば
OKですよね?
# --enable-zend-multibyte でコンパイルされたPHPの上で、
# mbstring.script_encoding=SJIS とすることで、
# SJISで記述したスクリプトを扱えるようになります。

>---
>mbstring.script_encoding
>
># 公式ドキュメント上はみつけられませんでしたが、
>
>スクリプトのエンコーディングを指定します。
>(PHPはこのエンコーディングでスクリプトを読み込み実行します)
>
>ただし、条件があって --enable-zend-multibyte
>付きでコンパイルされたPHPでのみ使用できます。
>
># --enable-zend-multibyte でコンパイルされたPHPの上で、
># mbstring.internal_encoding=SJIS とすることで、
># SJISで記述したスクリプトを扱えるようになります。



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