[PHP-users 22183]Re: 8bit出力

ISIGE, Akira xia @ silvia.com
2004年 6月 11日 (金) 14:45:21 JST


いしげ です.

On 2004/06/11 14:31:27 JST,
Tomoo Nomura <nomurat @ tmo.co.jp> wrote:

> exec ( "/usr/bin/nkf -sx $tmp > $filenm" ) ;
> ここで、上に述べたEUC-JPからShit_JISへの変換をやっていたのですが、ここ
> で、 200 --> 000 の変換が起きていました。
> phpとは関係ありませんでした。

再現コードはできるだけシンプルに,って教訓ですね.
ともあれ原因が判明して良かったです.


> ところで、[PHP-users 22164] いしげさんの結果は何だったんでしょうか?

こちらの環境で \200 が \000 に化けた件でしょうか?

おそらく,internal_encoding=SJIS という「おかしな」設定なので,
スクリプトファイルを読んでリテラル "\200" を解釈する段階で
無効コード(?)として解釈されてしまうのだと思います.

# ちなみにこの現象が起こるのは手元の環境では Linux だけで,
# Solaris も FreeBSD もこれは発生しません.

本当に 0x80 というコードがそこに入ってるのではなく,
"\200" という 4バイトの文字列ですから,
internal_encoding は影響しないでいていただきたいところですが,
対策は非常に難しそうな予感がするので,まだ詳しくは見てません.


--
ISIGE, Akira



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