Skip to content

16 Сентябрь 2011

188

Исправляем UTF8

utf

Не для кого не секрет, что на сегодняшний день любой современный сайт должен работать в кодировке UTF8. Все проблемы перекодирования из cp1251 в utf8 давно решены, вы уже наступали на эти грабли не раз и разбираетесь в этом доскональна. Но что делать, если после переноса на другой хостинг, или после перекодирования сайта в utf8, русский текст все равно искривляется, заполняется непонятными пробелами, а некоторый скрипты вообще отказываются работать? Не на что не похожая ошибка…  :roll:

Если вы поймали похожую проблему — скорее всего причина в BOM. После перекодирования, есть вероятность (зависящая от метода и софта, которыми вы пользовались) что файлы запишутся с BOM заголовком, что недопустимо для правильной работы сайта. Проверить это легко — можно открыть HEX редактором любой utf8 файл и проверить, есть ли символы EF BB BF в начале файла. Это и есть, так называемый Byte Order Mark от utf8.

Итак, главное — найти проблему  :smile:  А лечится она легко  :wink:

find . -type f \( -name '*.css' -o -name '*.js' -o -name '*.txt' -o -name '*.php' -o -name '*.htm' -o -name '*.html' \) -print0 | xargs -0 grep -l `printf '^\xef\xbb\xbf'` | xargs sed -i '1 s/^\xef\xbb\xbf//'

Скрипт ищет в текущей директории все файлы с соответствующими расширениями и удаляет у них BOM заголовок. Profit!  (6)

Еще из рубрики PHP

Обсуждение закрыто.