Войти  Зарегистрироваться


Работа с кодировками. Проблемы и решения.

(4 голоса, среднее 4.75 из 5)

На этот раз поговорим о вопросах кодировок web-страниц. В процессе разработки нередко приходилось сталкиваться с появлением, так называемых,"кракозябров" на сайтах. Так называют непонятные символы, которые появляются вследствии неправильного перекодирования текста. Для сайтов самыми используемыми являются кодировки Windows-1251 и UTF-8. Я рекомендую использовать UTF-8 и в данной статье я буду говорить о проблемах, которые появляются при переходе от кодировки Windows-1251 к UTF-8. Однако, решения, которые я здесь буду рассматривать могут быть применены и в других случаях. Давайте рассмотрим основные причины, по которым могут  появлятся "кракозябры".

Во-первых, бывает ситуация, когда не весь текст превращается в "кракозябры", а только часть текста. В этом случае на страницу с "правильной" кодировкой попадает текст с "неправильной".

Во-вторых, мы получаем эту красивую страницу с таинственными заклинаниями :), когда браузеру сообщается неверная кодировка страницы.

В-третьих, менее распространённая ситуация, когда строки обрезаются с помощью скриптов и на её краях появляются всё те же "кракозябры".

Теперь приступим к решению этих проблем.

1. В первом случае сначала нужно убедиться что браузер выбирает правильную кодировку страницы. Если это не так, то переходим ко второму пункту. Если с браузером всё в порядке, то нужно определиться с источником текста, который неправильно отображается. В случае, если текст статический, то есть, находится в каком-то подключаемом файле, то стоит его перекодировать в нужную нам кодировку (для UTF-8 лучше выбрать UTF-8 without BOM). Если же текст мы достаём из базы данных, то необходимо базу данных и таблицы хранить в нужной кодировке, хотя бывает достаточно сообщить серверу БД кодировку, которую мы собираемся использовать с помощью следующего запроса (если вы используете MySQL сервер)

mysql_query("SET NAMES utf8")

Этот запрос следует выполнить перед всеми последующими запросами, то есть, сразу же после выбора базы данных.

2. Если проблема заключается лишь в том, что браузеры "неправильно понимают" кодировку страниц, то есть, когда в браузере вы выставляете нужную кодировку, он правильно отображает страницы, значит вам необходимо сделать следующее. Откройте в корне сайта файл .htaccess (или создайте, если его нет) и добавьте строчку AddDefaultCharset UTF-8.

3. Для третьего случая советую вместо стандартных функций PHP работы со строками использовать мультибайтные (те, которые с префиксом mb_). Для того чтобы их
использовать, на сервере должно быть соответсвующее расширение.

Если столкнётесь с другими проблемами "кракозябров", пишите! С радостью постараюсь помочь.

Комментарии
⇓⇑ Добавить новый Поиск RSS
Имя:
Email:
 
Тема:
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Пожалуйста, введите проверочный код, который Вы видите на картинке.
Написал: Валерий  - Работа с кодировками. Проблемы и решения. |2010-12-24 15:36:13
avatar Спасибо за статью, я в сайтах новичок и ваша статья мне помогла, а именно пункт 2.