[PHP-dev 423] Re: mbstr-enc-trans, by default or not?

Rui Hirokawa php-dev@php.gr.jp
Tue, 16 Jul 2002 23:16:04 +0900


廣川です。

現状の実装を前堤にした場合の話しですが、
ユーザ入力の文字コード検出/変換機能をデフォルトの状態でオフとするの
に賛成です。

この辺りは春に行ったミーティングでも話題にのぼったところでもありますが、
その時も方向性は同じであったと思います。

ただ、私自身の考えとしてはユーザの選択肢が広い方が良いと
思うので、上記の機能をより汎用的にハンドラ型式で実装して
php.ini等で有効にするようにできればと思っています。
(といいながら実際の作業に手が付いていませんが。。。)

韓国語、中国語についての問題は、mbstring.lang
というので言語を指定し、デフォルトの検出順序を
選択することである程度回避できるかと思っています。

ファイルアップロードの文字化けを防ぐには、
mbstr-enc-transは必須ではないと思っています。PHP 4.2.2devとPHP 4.3.0devに
追加しているコードは、とりあえず
シフトJISを検出するという場当たり的な解決策でShift_JISの
2バイト目の0x5c問題を避けるようにしており、mbstr-enc-transの機能には
依存していません。
ただし、ISO-8859-Xのような8ビットエンコーディングのシングルバイト文字
コードがきたら動作が本来の動作とはならない可能性もあるので、現状のコードには
問題があるかもしれません。

言語の枠を越えて汎用的な解決策があれば良いのですが、Unicodeを
使うということを除いては、
ある程度言語やロケールのようなもので検出の範囲を限定して、
これに文字コード検出のような個別の対応策を組み合わせる
以外にないのではないかと思っています。

現状ではシングルバイト系の文字コードで問題がでない方が優先するため、
mbstring.lang = englishをデフォルトにして、
ユーザが、php.iniでmbstring.lang=japaneseを指定した場合に
ファイルアップロードにおけるShift_JISの問題を回避するといった
風な考えでいます。

シフトJISの一部の文字ようなイレギュラーなコードを回避する
策を考えるというのが現在のとりあえずの実装ですが、それだけでは
限界があるのではないかと感じています。

ファイルアップロードの問題については、何か良いアイデア
がありましたらアドバイスいただけるとありがたいです。


On Tue, 16 Jul 2002 10:38:46 +0900
Yasuo Ohgaki <yohgaki@ohgaki.net> wrote:

> 大垣です。
> 
> mbstringモジュールはPHP 4.3.0からデフォルトでビルドされる
> ようになります。この点は問題ないのですが、mbstr-enc-trans
> がデフォルトで有効になると困る場合もあります。
> 
> 例えば、日本語、韓国語、中国語のマルチリンガルサイトを作る場合
> mbstr-enc-transが有効だとこまった事になりえます。こういった
> 場合「UTF-8を使いなさい」というのも無理がありそうです。
> 
> デフォルトOffが良いのではと思っていますが、皆さんはどうお考え
> でしょうか?
> 
> 廣川さん> ファイルアップロードの文字化けを防ぐには、
> mbstr-enc-transは必須でしょうか?
> 

-----------------------------------------------------
Rui Hirokawa <rui_hirokawa@ybb.ne.jp>
             <hirokawa@php.net>