結局Shift_JISでPHPのプログラムは書いてもいいのか
PHPのMLを見て再燃。シフトJISでPHPのプログラムを書いてもいいのか。
自分としては以前の記憶で「–enable-zend-multibyteが有効でないときはNG」ということでスクリプトをシフトJISで書くことはなかった。しかしPHP-MLを見て疑問が再燃。「PHP-users 32796」で大丈夫との発言がある。そのメールに書かれたPHP-devのスレッドを読んでは見たのだが・・・一回見ただけでは理解できなかっった・・・。
http://ml.php.gr.jp/pipermail/php-dev/2003-May/thread.html#761
何をもって「使えるか」、というのも難しい議論だ。先のスレッドで「substr関数でマルチバイト文字はバイト数を意識しないと使えない」というのがあったが、それと「シフトJISのPHPスクリプト中で能や表なんて文字がNG」という議論とはちょっと違うような気がする。それとも雲の上の人たちが考えていることというのは、一般プログラマの思考回路とはレベルが違うのだろうか・・・。
ちなみに今、使っているサーバでPHP4.3.2な環境がある。CentOS4.2とかならこの環境の人もいるんじゃないか?。セキュリティアップデートかけているだけならPHPのバージョンはかわらないから。
上記の環境でhtaccessでinternal_encoding、script_encodingにSJISを設定して以下のスクリプトを実行した(スクリプトはSJISで保存)。
print(“表”);
結果はエラーだった。やっぱ使えないじゃん。結局やっぱり「zend multibyte」が有効なんじゃないとダメなんじゃないの〜?。「zend multibyte」が有効なレンタルサーバがどれほどあるっていうんだぁ?。
これ、誰か詳しく解説してほしい。
php.iniのマルチバイト関連の設定も含めて、どのバージョンからどのように設定したらSJISが使えるようになるのか。
まぁ、自分はUTF-8で書くけどね。