2010-09-11 58 views
1

我的計算機上有一些UTF-16文件,雖然這似乎是由於文件的錯誤或損壞而非意圖 - 它們應該是純英文的。我上傳了其中一個(here)。如果我在UTF-8中將編碼保留在Firefox中(Viwe> Character Encoding),那麼我會得到大量的亂碼(請參閱screenshot)。如果我將編碼更改爲UTF-16,那麼它看起來好多了(參見screenshot2),儘管仍然存在一堆CJK字符。使用PHP清理UTF-16/CJK字符?

我想通過所有這些文件並清理它們,並可能將它們保存爲utf-8格式(我將把內容插入到使用utf8_general_ci排序規則的mysql表中)。有誰知道我可以用PHP以自動化的方式做到這一點嗎?如果您嘗試以UTF-8格式查看文件,我想擺脫文件顯示的所有時髦字符,如果您使用UTF-16格式查看,則還要顯示所有CJK字符。

回答

3

這應該做的伎倆:

$txt = file_get_contents('watches.txt'); 
$txt = mb_convert_encoding($txt, 'UTF-8'); 
/*Nice regexp to strip non asci and non-printable chars*/ 
$txt = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S','',$txt); 
$txt = preg_replace('/[^\x00-\x7F]+/S','',$txt); 

echo $txt; 
+0

非常感謝你那偉大工程:) – Tristan 2010-09-12 03:07:57

+0

感謝您一直在尋找這一點。 – Jason 2012-11-09 19:26:22