среда, 29 августа 2012 г.

Проблемы с кодировкой в MySQL-PHP

Периодически бывает так, что web-сервер с поддержкой php отображает тексты из php-скриптов нормальными русскими буквами, а все данные из MySQL отображаются знаками вопроса (??????????). Подобная проблема обычно появляется при импорте данных в базу из дампа.

Для начала стоит просмотреть дамп для понимания используемой в нём кодировки символов. К примеру данные в нём в кодировке UTF-8. Пробуем создать базу данных с кодировкой по умолчанию UTF-8:


create database pelikanch_data default character set cp1251 collate cp1251_unicode_ci;



В консоли MySQL даём команду show variables и смотрим кодировку у следующих переменных:


character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
character_set_system
collation_connection
collation_database
collation_server


Для быстрой проверки используем

set character_set_client=UTF8;

Так же и для остальных переменных. Лучше прописать переменные в файл настроек my.cnf - в секцию [mysqld] дописываем:

default-character-set = utf8
init-connect = "SET NAMES utf8"

так же можно здесь же дописать:


character_set_client = utf8
collation_server = utf8_general_ci

Что-либо из вышеперечесленного обычно помогает, если не помогло - возможно проблема в самих скриптах PHP.

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

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