1

次のコードという奇妙な問題があります。

$str = "נסיון" // <--- Hebrew chars
echo mb_detect_encoding ($str)."<br><br><br>";
$str = iconv (mb_detect_encoding($str),'UCS-2BE',$str);
echo mb_detect_encoding ($str)."<br><br><br>";

これは出力します:

UTF-8

UTF-8

このコードは、BOM なしの UTF-8 で (Notepad++ を使用して) エンコードされたファイルに記述されており、他のエンコーディングを試しても機能しませんでした。

また、次を使用して文字列を変換しようとしました:

$str = mb_convert_encoding($str,'UCS-2BE');

しかし、それもうまくいきませんでした。洞察はありますか?

4

1 に答える 1

1

mb_detect_orderのドキュメントから、mb_detect_encodingさまざまなエンコーディングをテストする順序を確立する関数:

mbstringは現在、次のエンコード検出フィルターを実装しています。以下のエンコーディングに無効なバイト シーケンスがある場合、エンコーディングの検出は失敗します。UTF-8、UTF-7、ASCII、EUC-JP、SJIS、eucJP-win、SJIS-win、JIS、ISO-2022-JP

ISO-8859-* の場合、mbstring は常に ISO-8859-* として検出します。

UTF-16、UTF-32、UCS2、および UCS4 の場合、エンコードの検出は常に失敗します。

したがって、mb 関数で 2 番目の文字列のエンコーディングを検出することはできません。

于 2013-08-08T13:04:40.990 に答える