[PHP-users 25324] Re: mb_convert_encoding/mb_detect_encoding について

Yoichi Enomoto enomoto @ jposting.co.jp
2005年 4月 8日 (金) 11:10:44 JST


榎本です.
ご教示いただきたいこととずれていきそうなので,私自身の確認の
ためにも再度,まとめさせていただきました.

■現象と疑問
PHP 4.3.10 から 4.3.11 へのバージョンアップで,動作の異なる
現象が発現した.

# mb_convert_encoding() の戻り値を mb_detect_encoding() に
# 渡した場合の結果が異なる.

何らかの不具合が混入されたのか?


■疑問の根拠
4.3.11 の ChangeLog には含まれてない処理である.
バージョンアップの際に php.ini の変更はしていない.
4.3.10 と 4.3.11 で mb_detect_order() は同じ結果である.
4.3.11 から 4.3.10 にバージョンダウンすると元に戻る.


以下に,サンプルを示します.
4.3.10 と 4.3.11 のそれぞれの環境で実行した結果に疑問を
持った次第です.

<?php
/*
mbstring.detect_order = auto
mbstring.internal_encoding = EUC-JP
*/

// 4.3.10 も 4.3.11 も Array ( [0] => ASCII [1] => JIS [2] => UTF-8 [3] => EUC-JP [4] => SJIS )
print_r(mb_detect_order());
echo "<br>";

$a = mb_convert_encoding('商社・流通・小売', 'SJIS', 'EUC-JP');
$b = mb_convert_encoding('小売業(百貨店、専門店、スーパー、CVS他)', 'SJIS', 'EUC-JP');

// 4.3.10 では SJIS だが
// 4.3.11 では EUC-JP となる
echo mb_detect_encoding($a);
echo "<br>";
echo mb_detect_encoding($b);

?>


--
Yoichi Enomoto <enomoto @ jposting.co.jp>



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