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

Moriyoshi Koizumi moriyoshi @ at.wakwak.com
2003年 5月 25日 (日) 22:52:25 JST


小泉です。

Tomoyuki Asakawa <tom @ asakawa.ne.jp> wrote:

> 
> あさかわ
> 
>  >十分考えられますよね。SJIS の解釈に問題が発生するのは字句解析の部分であ
>  >って、ランタイムが SJIS を扱えないわけではありませんから。
>  >スクリプトからマルチバイト文字を排除するだけで addslashes() など一部の関
>  >数の挙動に注意すれば問題なく動くわけです。
> 
> それは、「SJISは使えない」という、範疇にはいると思いますよ。

「SJIS が使えない」という言葉のニュアンスが微妙ですが…。

履き違えているかもしれませんが、
substr() を例に取ると、この場合はいかなる種類のマルチバイト文字も、バイト
列の境界に注意しなくてはまともに扱えませんので、PHP ではマルチバイト文字は
使えないという話にもなってしまうと思うのですが。

とにかく、まず、zend multibyte がない状態では、あさかわさんの観点では、
SJIS はいかなる場合でも使えないということになると思います。
従って、この仮定の下では internal_encoding=SJIS として、期待通りの動作を得
られることはないと言えます。

zend multibyte が有効な状態では、script_encoding=internal_encoding でも、
SJIS で記述されたスクリプトは正しく解釈されます。

さらに、internal_encoding=SJIS ですが、mbstring の関数を使えば、
マルチバイト文字列は正しく処理できます。

これでも、internal_encoding=script_encoding で起こる致命的な不具合は
他にあるでしょうか…。




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