[PHP-users 30751] Re: Windows + PHP で UTF-8 を扱う

chores @ jp1.cx chores @ jp1.cx
2006年 11月 20日 (月) 00:18:52 JST


塚田です。

的確な回答ありがとうございます。

> と指摘されているように、NTFSのロングネームは UTF-16 で格納することが決まっ
> ています。これについては、goungounさんも
> 
> > 今のWindowsがカーネルレベルではUnicodeで処理しているのは知っていますが
> 
> と指摘されているとおりです。ただ、一口にUnicodeといっても複数の実装方式
> があり、NTカーネルは、原則として UTF-16 になっています。

なるほど、UTF-16 でしたか。

自分で書き込んだ後で「なら、なぜ Win9x 系と NT 系で相互にファイルの読み
書きできるんだ?」と疑問に思っていました。
OS というよりは、ファイルシステムにも依存するわけですね。納得です。

ちなみに、UTF-16 はソースコードのエンコードとしては使用不能なのでしょう
か? (PHP マニュアルだったかに、可否リストがあった気がしたのですが、見つ
けられなくて…)
試してみたら、プログラムとして解釈されずに、ソースコードのまま送出されて
しまいました。所謂「シングルバイト文字」が1バイトでないと無理ですかね。


> そこで、
> 
> echo 'UTF-16: '. file_exists(mb_convert_encoding($filename, 'UTF-16')) . "\n";
> 
> としてやれば TRUE で返るはずです。

確かに TRUE で返りました。


続いて、PDO についても類似した質問があるのですが、そちらは別のメールにて
投稿させていただきます。

-- 
 <chores @ jp1.cx>



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