我想檢測一些文本的編碼(使用PHP)。 爲此,我使用mb_detect_encoding()函數。PHP中的mb_detect_order()的奇怪行爲
問題是,如果我使用mb_detect_order()函數更改可能的編碼順序,該函數將返回不同的結果。
請看下面的例子
$html = <<< STR
ちょっとのアクセスで落ちてしまったり、サーバー障害が多いレンタルサーバーを選ぶとあなたのビジネス等にかなりの影響がでてしまう可能性があります。特に商売をされている個人の方、法人の方は気をつけるようにしてください
STR;
mb_detect_order(array('UTF-8','EUC-JP', 'SJIS', 'eucJP-win', 'SJIS-win', 'JIS', 'ISO-2022-JP','ISO-8859-1','ISO-8859-2'));
$originalEncoding = mb_detect_encoding($str);
die($originalEncoding); // $originalEncoding = 'UTF-8'
但是如果你改變編碼的mb_detect_order順序()的結果會有所不同:
mb_detect_order(array('EUC-JP','UTF-8', 'SJIS', 'eucJP-win', 'SJIS-win', 'JIS', 'ISO-2022-JP','ISO-8859-1','ISO-8859-2'));
die($originalEncoding); // $originalEncoding = 'EUC-JP'
所以我的問題是:
這是爲什麼發生?
在PHP中有沒有一種方法可以正確無誤地檢測文本的編碼?
非常感謝! – Termos 2010-05-21 11:14:08