[PHP-dev 767]Re: zend-multibyteの挙動について
Tomoyuki Asakawa
tom @ asakawa.ne.jp
2003年 5月 25日 (日) 15:07:55 JST
あさかわ
> この件で、議論していたのは、
なにを議論してるのかはわかってるつもりですが。
> >SJISを、設定することはできるけど、SJISの、2バイト目に\が来る文字
> >(能など)の問題があるので事実上つかえないはずですが。
>それは理解しています。
なのだから
>> // SJISでスクリプトが書かれていた場合、自動的に
>> // internal_encdingがSJISになる
なんていうのは、反対だと言ってるわけですよ。
それとも、internal_encdingがSJISになっても
SJISスクリプトに”能"という文字が入っていても正常に動作する
様にPHP本体が変わることを前提にされてるのでしょうか?
>ついでに書いておくと、本来、encoding_translationの用途は
>http_inputの(internal_encdingへの)自動変換なのでは?という話を
>していました。
「本来」って意味ではそうだと思います。
しかし、PHP本体が、SJISを、理解できない以上しょうがないという
ことだと思います。
また、
internal_encoding != script_encoding
のおかげで
今だと。
ファイルやDBの入出力がinternal_encodingに固定されるので
スクリプトがEUCとSJISの混在でも、正常に動作するという
メリットもあります。
もちろん混在させるのが間違ってるという考え方もありますが。
本来論ならば漢字コードなんて意識しないですむ様になっていればいいのですが
歴史的経緯で、現在は意識が必要で、将来的にも、必要でしょう。
なので逆に現在、internal_encodingに
ファイルの入出力のencodingも影響受けていますが
ある意味でこちらの方が、わかりにくくしてる原因の一つだと思います。
既存の言葉だと誤解の元なので、あえて、日本語にしますが
プログラムスクリプトの漢字コード
PHPの文法処理の漢字コード
ファイル入出力の漢字コード
API(DBなど)の漢字コード
HTTP 入出力の漢字コード
この5つは、独立事象のはずです。
ところが、現在真ん中の3つが、internal_encodingとして
同時に作用してしまうので
script_encoding = internal_encoding
にすると、わかりやすくなる様に
みえるのだと思います。
わたしは、前述の様に、それはそれで別の問題を引き起こすと思います。
そこで
プログラムスクリプトの漢字コード=script_encoding
ファイル入出力の漢字コード=file_encoding
API(DBなど)の漢字コード=api_encoding
HTTP 入出力の漢字コード= http_encoding
以上がinternal_encodingから
分離できれば。
PHPの文法処理の漢字コードにSJISが使えないという
問題は無関係になり
PHPの文法処理の漢字コード=internal_encoding
は、PHPの開発者以外は知らないで
よいことになるはずです。
その時
file_encoding= api_encoding= http_encoding
のデフォルトが、script_encodingと同じになるというのならば
非常にわかりやすくなると思います。
PHP-dev メーリングリストの案内