6

PHP 関数 mb_detect_encoding に問題があります。ISO-8859-1 に変換できません。何か助けはありますか?

コード:

$str = "åäö";
$encoding = mb_detect_encoding($str);
echo $encoding;
            
$encoding = mb_detect_encoding(mb_convert_encoding($str, "ISO-8859-1"));
echo $encoding;

出力:

UTF-8

UTF-8

更新された、解決策:

mb_detect_order を array('UTF-8', 'ISO-8859-1') に更新したところ、うまくいきました。

4

2 に答える 2

8

実際に文字列を変換していません。むしろ、 への呼び出しはmb_convert_encoding、元の文字列が UTF-8 であると想定していませんでした。呼び出し前の文字列は、すでに ISO-8859-1 である可能性があるバイト シーケンスでした (そして、アイテムを別の方法で表現していたはずです)。を呼び出すのではなく、文字列mb_detect_encodingに対して を使用bin2hexし、変換呼び出しの後にバイト シーケンスを確認することで、これが当てはまることがわかります。バイト シーケンスが変更されていないことがわかります。

変換を機能させるには、(この場合は) 元のエンコーディングを伝える必要があります。使用する:

mb_convert_encoding($str, 'ISO-8859-1','utf-8');

この後にバイト シーケンスを調べると、変換が行われたことがわかります。

于 2012-08-22T12:41:02.833 に答える
-2

mb_detect_orderをarray('UTF-8'、'ISO-8859-1')に更新しましたが、機能しました

于 2012-08-22T12:37:21.470 に答える