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

komura komura @ ma9.seikyou.ne.jp
2005年 4月 8日 (金) 02:30:10 JST


komura です。

On Thu, 07 Apr 2005 21:45:54 +0900
Yoichi Enomoto <enomoto @ jposting.co.jp> wrote:

> ソーススクリプトは,EUC-JP で記述しています.
> 
> 'auto' の指定は 'ASCII,JIS,UTF-8,EUC-JP,SJIS' への展開と
> 認識しています.

マニュアルではそのように書かれていますが、最近の PHP(4.3.4 以降) では設定
によってはそのようにはならないようです。

http://jp2.php.net/manual/ja/function.mb-detect-order.php

の User Contributed Notes には説明がありますが、例えば、以下のように
mb_language() または、php.ini の mbstring.language の設定によって
"auto" を指定した時の内容が変化します。

特に、php.ini で mbstring.language を指定しない場合は uni と同じ扱いです
ので "auto" を使用する際には気を付けた方が良いと思います。

<?php

mb_language( 'uni' );
mb_detect_order( 'auto' );
print_r( mb_detect_order() );

mb_language( 'Japanese' );
mb_detect_order( 'auto' );
print_r( mb_detect_order() );

mb_language( 'Russian' );
mb_detect_order( 'auto' );
print_r( mb_detect_order() );

?>

実行結果(PHP 4.3.11)
----
Array
(
    [0] => ASCII
    [1] => UTF-8
)
Array
(
    [0] => ASCII
    [1] => JIS
    [2] => UTF-8
    [3] => EUC-JP
    [4] => SJIS
)
Array
(
    [0] => ASCII
    [1] => UTF-8
    [2] => KOI8-R
    [3] => Windows-1251
    [4] => CP866
)

-- 
komura <komura @ ma9.seikyou.ne.jp>


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