Интернет и компьютеры / Как сменить кодировку в MySQL

Интернет и компьютеры / Интернет

Как сменить кодировку в MySQL

 
Автор: Hardware DragonНаписать ПС | | Дата: 10-09-2009 / 18:53 | 12976 просмотров | [0 комментариев] кодировка MySQL, как сменить кодировку latin1_swedish
Проблемы с кодировкой в MySQL
Какое сравнение выставить в phpMyAdmin
Не отображается русский язык в MySQL
Вопросики на сайте вместо русского


Рассмотрим ситуацию, когда вам нужно восстановить сайт из дампа MySQL.
Ваш сайт работает на национальном языке (например русском или иврите) и, допустим, вы не знаете в какой кодировке был сохранен дамп.



Для начала проверим кодировку дампа MySQL.
Для этого откроем файл с дампом в любом php/html редакторе (можно так же в notepad) и в меню выберем «Сохранить как» (Save as).
Посмотрите в нижнюю строчку – там указанна текущая кодировка фала (См. рисунок).

Если MySQL должен работать с другой кодировкой (не той, что вы видите) или на сайте, например, используется UTF-8, то просто пересохраните файл в нужной кодировке и все. Ни в коем случае не делайте это с использованием Word'а (пламенный привет Microsoft'у).

russki_yazik_mysql.jpg (63.39 KB)


С кодировкой дампа разобрались, заодно открыли его и проверили, что в тексте виден русский, и можно продолжать.
Если в дампе только вопросики и русского там не видно, то продолжать нет смысла – дамп битый.

После создания базы MySQL (см. демо ролик, как создать базу MySQL) переходим в phpMyAdmin, вкладка «Операции» (цифра 1 на картинке) и первым делом меняем дефольтную кодировку базы latin1_swedish (цифра 2) на подходящую нам. Например, на русскую - cp1251_general_cs.

smena_kodirovki_MySQL1.jpg (37.16 KB)


Получаем подтверждение, что «MySQL запрос был выполнен», желающие могут выполнить это с помощью SQL запроса ALERT DATABASE (он виден на экране) и переходим к следующему этапу – вкладке «Импорт» (3).

smena_kodirovki_bazi_MySQL_.jpg (44.71 KB)


Но прежде чем импортировать файл с дампом в MySQL нам нужно объяснить базе, на каком языке с ним работать. Поэтому мы выбираем русскую кодировку (4) cp1251 (это Кириллица) и только после этого переходим непосредственно к импорту (5).

russkayz_kodirovka_MySQL.jpg (45.62 KB)


Если все в порядке и не произошел, например, обрыв связи или ваш дамп не содержит запрещенных к использованию в MySQL последовательности символов, то мы получаем очередное подтверждение, что «Импорт успешно завершен» и теперь в нашей базе есть русский.


Существует правда еще одна причина, по которой, даже если у вас в базе есть русский, то на сайте вы все равно получите вопросики: Нужно объяснить коду php что в БД русский.
Для этого найдите, где в вашем коде где происходит подключение к БД и перед коннектом добавьте строчку mysql_query('SET NAMES cp1251');
Ну, или mysql_query("SET NAMES utf8 COLATE utf8_general_ci"); если вы собираетесь использовать UTF-8. В этом случае на всех предыдущих этапах вы тоже должны были указать UTF-8.

Если результат коннекта к БД записывается в переменную, например, $result, то перед самим коннектом в эту же переменную запишите:
$result = mysql_query('SET NAMES cp1251');

Если вы нигде не ошиблись и ничего не пропустили, то теперь все должно работать правильно и вопросиков на вашем сайте больше не будет.


***
Ну а когда вам надоест возиться с базами данных, то приходите к нам на хостинг - надежный хостинг с php и MySQL от IQ Partner - и наша поддержка в мгновение ока порешает все ваши проблемы.
Источник: IQ Partner: надежный хостинг php MySQL