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

Yoichi Enomoto enomoto @ jposting.co.jp
2005年 4月 7日 (木) 20:24:27 JST


榎本です.返信ありがとうございます.

仰るように,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/ への報告も視野に入れて,もう少し
様子を見たいと思います.



On Thu, 07 Apr 2005 17:33:51 +0900
神 谷 <djr_kamiya @ hotmail.com> wrote:

> >その後,一部の全角文字列において mb_detect_encoding() 関数の戻値
> >に変化があったため,同じ環境に PHP 4.3.10 と 4.3.11 を入れ替えて
> >それぞれ確認したところ動作が異なりました.
> 私の環境は
> WindowsXP Professional
> PHP 5.0.3
>   > internal_encoding = EUC-JP
> ですが、同じように
> EUC-JP
> と認識されます。
> ただ、変数の内容はきちんとSJIS変換されていますね。
> サンプルになる文字が少ないからか・・・とも思いましたが、文字数/種類を増やし
> ても
> 状況がかわりませんね。
> 
> print mb_detect_encoding($a,"JIS, sjis-win, eucjp-win")."\n";
> print mb_detect_encoding($a,"auto")."\n";
> 
> のように、エンコーディングリスト指定パターンと自動判別の両方試してみると、
> 前者:SJIS-winと認識
> 後者:EUC-JPと認識
> それぞれ、コンバート前後に mb_detect_encoding を実行してみましたが、コンバー
>> 前後で結果が変わりません。
> 
> mb_detect_encoding
> の動作が怪しいようです。

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



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