[PHP-users 22409]Re: CSVの挽墅アップロードで文字化け

Moriyoshi Koizumi moriyoshi @ at.wakwak.com
2004年 6月 27日 (日) 20:09:09 JST


小泉です。

On 2004/06/25, at 19:33, Sumito_Oda wrote:

> 織田です。
>
>> \x5c (=\記号/バックスラッシュ) を見つけると無条件にエスケープと
>> 判断する仕様のため、根本的な解決法はありません。
<snip />
> まず最初にこのデータ(SJIS)をバイナリーで見た際に、引っかかりそうな部分は
> 予備(975c94f5)のところで、件の「田口(93638cfb)」で影響(文字化け)が出るように
> 思えないので別の理由だと思いました。実際のところ影響は出るんでしょうか。

本当にややこしい問題なんです。これ。

PHP 3 系統の fgetcsv() と、PHP 4.3.1 以前の fgetcsv() は、バックスラッシュで
エスケープする仕様にはなっていませんでした。なので、kouno さんの環境では、
\x5c を含む該当部分では問題が起こらなかったのです。

# 本当に無断でコロコロ仕様変えるのやめてほしい...

注意してほしいのは、私の指摘したバグは、Shift_JIS に限らず \x80 - \xff の
コードを使うあらゆるマルチバイト文字エンコーディング (UTF-8, EUC-JP 含む)
において発現することです。

また、Windows でも、一部の msvcrt のバージョンとの組み合わせで Solaris 同様に
発現する可能性があります。

PHP 5 からは上記の問題が修正されました。しかし、将来、心ないメンテナによって
再びエンバグされる可能性もあります (笑)



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