[PHP-users 25318] Re: mb_convert_encoding/mb_detect_encoding について
komura
komura @ ma9.seikyou.ne.jp
2005年 4月 8日 (金) 02:29:11 JST
komura です。
On Thu, 07 Apr 2005 20:24:27 +0900
Yoichi Enomoto <enomoto @ jposting.co.jp> wrote:
> 榎本です.返信ありがとうございます.
>
> 仰るように,mb_detect_encoding() の動作が怪しいですね.
> 以下の,新たなサンプルで試したところ,
>
> <?php
>
> $a = '商社・流通・小売';
> $b = '小売業(百貨店、専門店、スーパー、CVS他)';
>
> echo mb_detect_encoding($a);
> echo "<br>";
> echo mb_detect_encoding($b);
> echo "<hr>";
>
> $a = mb_convert_encoding($a, 'SJIS', 'EUC-JP');
> $b = mb_convert_encoding($b, 'SJIS', 'EUC-JP');
>
> echo mb_detect_encoding($a);
> echo "<br>";
> echo mb_detect_encoding($b);
>
> ?>
>
> 4.3.10 では,前「EUC-JP」,後「SJIS」と検出されますが,
> 4.3.11 では,前後ともに「EUC-JP」のままとなりました.
>
> 4.3.11 で mb_convert_encoding() の修正がされた際に,
> 別の関数である mb_detect_encoding() に何らかの不具合が
> 混入されたと考えるのが妥当というところでしょうか?
>
> http://bugs.php.net/ への報告も視野に入れて,もう少し
> 様子を見たいと思います.
PHP マニュアルでは mb_detect_encoding() の引数は3つありますが、
(第3引数の bool strict は PHP 4.3.3 くらいから導入されたようです)
string mb_detect_encoding ( string str [, mixed encoding_list [, bool strict]] )
上のスクリプトの最後の部分で以下のように mb_detect_encoding() の第3引数
を TRUE にすると SJIS として検出されることを確認しました。
echo mb_detect_encoding($a, NULL, TRUE);
echo "<br>";
echo mb_detect_encoding($b, NULL, TRUE);
第2引数の NULL は 'auto' としても同じです。
詳しく調べている時間がありませんでしたので、第3引数の strict の機能などに
ついては分かりません。意味的には厳密に文字コード検出を行なうようなオプション
と思われます。
--
komura <komura @ ma9.seikyou.ne.jp>
PHP-users メーリングリストの案内