[PHP-dev 755]Re: zend-multibyteの挙動について

Rui Hirokawa rui_hirokawa @ ybb.ne.jp
2003年 5月 5日 (月) 23:37:06 JST


廣川です。

On Mon, 05 May 2003 02:00:12 +0900
Moriyoshi Koizumi <moriyoshi @ at.wakwak.com> wrote:

> 小泉です。
> 
> こんな頻度で、しかもこんな時間に php-dev @ php.gr.jp でメールが交わされた前
> 例はなさそうなんですが ^^;
> 
> 今 Derick に、日本語など各国語フォントを彼のマシンにインストールするよう頼
> んでいるので、その時間つぶしをかねています。
> 
> Masaki Fujimoto <fujimoto @ tunebiz.net> wrote:
> 
> > や、多分#if defined(MBSTR_ENC_TRANS)がif (MBSTRG...)になってるだけだと思
> > いますよ。(っていう意味でしょうか?)
> > 
> 
> そういう意味です。
> 下位互換性のことを考慮しなくてはと思い、そんなことを口にしたわけです。

この辺は、ご指摘の通り、PHP-4.3.0リリース時の政治的な話とからんできますが、
具体的な変更点は藤本さんが回答されている通り、
「#if defined(MBSTR_ENC_TRANS)がif (MBSTRG...)になった」ということです。

encoding_translationによるコード変換オン・オフ機能をscript_encoding =>
internal_encodingにも適用することは混乱を招くのではというご指摘ですが、
このあたりは、PHP 4.3.0リリース時にはzend-multibyte自体をCVSコードに取り
込んだばかりで、zend-multibyteをデフォルトで有効にする段階ではなかったた
め、正直この辺のことを考えていませんでした。

ご指摘の通り、現時点で、encoding_translationスイッチがscript_encoding指定に
よる変換の動作に影響する理由はないと思います。

ただし、
将来的にzend-multibyteの機能をデフォルトで有効にする際には、同様に政治的
な話になる可能性があり、機能付加により安定性や性能を損なわないということを
説明する必要があるため、分かりやすい仕様にしておいた方が良いと思います。

> 
> ここで下位互換性のほかに考えなくてはいけない点は、script_encoding と 
> internal_encoding が一致しないケースは混乱を招きやすい、ということでしょう
> か。たとえば、http_input が EUC-JP で、script_encoding が Shift_JIS で
> internal_encoding が UTF-8 というのが原理的に可能ですし、場合によっては便
> 利でしょうが、全面的に有益かというと、どうでしょうか。この組み合わせが許さ
> れる場合と、許されない場合があることは、スクリプトの総合的なポータビリティ
> を阻害します。

よく理解できていないのですが、こと日本語に関しては、Shift_JISでスクリプ
トを書きたいが、パース時等に問題を発生してしまうというニーズからきている
機能だと思っています。
昨年開催したPHP国際化関連の打ち合わせでもこの辺の話題になり、
「上記のニーズが実現できれば、一般のPHPユーザにとっては、内部文字コード
などは(極論すれば)どうでも良い話では?」という意見もでました。

私も、Shift_JIS、EUC-JP、UTF-8でスクリプトが書けるということは、ユーザに
とって有用だと思いますが、内部文字コードを選択できるということは
ユーザに不要な混乱を招いていると感じていますし、混乱を避けるという意味で
は、内部文字コードはデフォルト値(現状ではUTF-8?)に統一した方が良いので
はと思います。

----------------------------------------------------------
Rui Hirokawa <rui_hirokawa @ ybb.ne.jp>
                  <hirokawa @ php.net>
http://www.geocities.jp/rui_hirokawa/



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