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