Очистка символов UTF-16 / CJK с использованием PHP? - PullRequest
1 голос
/ 11 сентября 2010

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

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

1 Ответ

3 голосов
/ 11 сентября 2010

Это должно сработать:

$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;
...