31 янв. 2011 г.

Удаление битых символов из unicode-строки

Допустим, вам пришла от клиента строка в кодировке UTF-8 с битым символом (скопировал с другого сайта). Вы пытаетесь записать строку в базу данных, а она у вас валится с сообщением о том, что битые символы не принимаются.

Чтобы починить ситуацию, нужно удалить битые символы. Но как их удалить? С помощью preg_replace удалить все, что не "a-Яa-Z0-9.!@#$%^&" и т.д.? Не вариант, у вас ведь международный сайт, там могут быть и японские символы.

Выход:

$content = iconv('utf-8', 'utf-8//IGNORE', $content);

Функция конвертирует utf-8 в utf-8, при этом попутно пропуская символы, которые не может обработать.

Комментариев нет :

Отправить комментарий