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