Справочный центр
Справочный центр: Работа с базами данных MySQL
Кодировка в MySQL
Отправлено Инна Соломка в 24 April 2015 10:00

Общее понятие кодировки на хостинге
Знаки вопроса вместо кириллицы
Символы Краткая вместо кириллицы

Общее понятие кодировки на хостинге

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

Крякозябры на сайты появляются в следствии несовпадения кодировок файлов сайта, базы данных и её содержимого. Что такое кодировка? Это специальная таблица (набор символов), которая переводит привычные нам символы (буквы, цифры, знаки препинания) в нули и единицы. Проще говоря, для того, чтобы компьютер смог понять наш запрос, данные нужно представить в виде машинного кода. Для того, чтобы уже нам был понятен результат выполнения компьютером нашего запроса, машинный код нужно представить в виде символов того или иного алфавита. Именно для этих целей служит кодировка. Благодаря кодировке мы понимаем компьютеры, а они понимают нас.

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

Во избежание подобного следует помнить - все данные на хостинге должны использовать одну кодировку. Это касается как данных в БД, так и скриптов сайта.
Далее рассмотрим самые типовые случаи отдельно.

[↑наверх]

Знаки вопроса вместо кириллицы

Иногда случается так, что после размещения на хостинге пользователи видят на сайте знаки вопроса вместо кириллицы. Это значит, что используется кодировка cp1251 (windows-1251), а содержимое дампа без перекодировки в utf-8.

Как исправить:

  1. Подключиться к БД с помощью phpMyAdmin и удостовериться, что в самой базе данные отображаются корректно
  2. Если в базе все отображается красиво, откройте на хостинге файл (с помощью FTP по инструкции "Основной FTP аккаунт"), который устанавливает подключение к базе и после функций mysql_connect или mysql_pconnect добавьте строку:

mysql_query("SET NAMES 'cp1251'")

[↑наверх]

Символы Краткая вместо кириллицы.

Вероятная причина этого в том, что страница в браузере открывается в кодировке cp1251, а соединение с БД работает в кодировке UTF-8.

Как исправить:

1. Сохраните файлы сайта в кодировке UTF-8 без BOM. Любой современный текстовый редактор позволяет это сделать (например, Notepad ++ или SublimeText 2). В .htaccess сайта пропишите:

AddDefaultCharset UTF-8

Если вы загрузили на хостинге новый .htaccess или только создали его, не забудьте синхронизировать htaccess по иструкции "Работа с htaccess на Linux-хостинге"

2. Для принудительного определения кодировки не обязательно использовать .htaccess. Заголовки можно отправить с помощью функции header(). В начале файла добавьте строку:

header('Content-Type: text/html; charset=utf-8');

 

[↑наверх]

Возможно, вам также будут полезны эти материалы:

Официальная документация по MySQL
Настройка MySQL для работы с UTF8
Список поддерживаемых кодировок и представлений

(5 голосов)

© 2002—2020 ООО «Национальные телекоммуникации»