Очистка символов UTF-16/CJK с помощью PHP?

У меня на компьютере есть несколько файлов в формате UTF-16, хотя это, похоже, из-за ошибок или повреждения файлов, а не из-за намерения - они должны быть простыми английскими. Я загрузил один из них (здесь). Если я оставлю кодировку в Firefox (Viwe>Character Encoding) на UTF-8, то получу кучу тарабарщины (см. скриншот). Если я изменю кодировку на UTF-16, она будет выглядеть намного лучше (см. скриншот2) , хотя есть еще куча персонажей CJK.

Я хотел бы просмотреть все эти файлы, очистить их и, возможно, сохранить в формате utf-8 (я буду вставлять содержимое в таблицу mysql, в которой используется сопоставление utf8_general_ci). Кто-нибудь знает, как я могу сделать это автоматически с помощью PHP? Я хотел бы избавиться от всех забавных символов, отображаемых в файле, если вы попытаетесь просмотреть его в UTF-8, а также от всех символов CJK, отображаемых при просмотре в UTF-16.


person Tristan    schedule 11.09.2010    source источник


Ответы (1)


Это должно помочь:

$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;
person dev-null-dweller    schedule 11.09.2010
comment
Спасибо искал это. - person Jason; 09.11.2012