О web-разработке
и даже немного больше...

Как изменить кодировку базы MySQL из Win-1251 в UTF-8?

Некоторые неудобства с кодировкой windows-1251 заставляют задуматься о том, как перевести кодировку проекта на другую, к примеру, UTF-8. С файлами — всё проще, открываем в редакторе (к примеру, Notepad++) файлы скриптов, преобразуем их кодировку UTF-8/без BOM, сохраняем. Однако если ваш сайт использует для хранения данных базу (зачастую MySQL), то вам необходимо конвертировать так же кодировку базы данных. Выполнение данной задачи предусматривает разные способы. Здесь мы рассмотрим, пожалуй, самый быстрый и простой способ. Делать мы это будем посредством использования SQL-запроса.

Запрос для конвертации базы:

ALTER TABLE `db_name`.`table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Данный запрос конвертирует базу в указанную кодировку, доступную для MySQL. Кроме этого потребуется конвертировать кодировку самих таблиц. Можно производить конвертацию таблиц по отдельности каждую, неудобство возникает при большом количестве таблиц. К счастью, мучить себя этим рутинным занятием не придется, т.к. можно это сделать посредством одного запроса.

Запрос для конвертации таблиц базы данных:

SELECT CONCAT(  'ALTER TABLE `', t.`TABLE_SCHEMA` ,  '`.`', t.`TABLE_NAME` ,  '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) AS sqlcode
FROM  `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` =  'My_DB_for_convert'
ORDER BY 1
LIMIT 0 , 90

Вместо My_DB_for_convert вам необходимо указать имя своей базы данных. Данный запрос будет работать в MySQL начиная с версии 5 и выше. В случае с использованием утилиты phpMyAdmin всё проще простого, остается только скопировать данный запрос и вставить в форму SQL запроса.
Стоит обратить внимание на то, что существуют подкодировки UTF-8, популярные из них:

utf8_general_ci и utf8_unicode_ci

Скорость работы, и порядок сортировки у этих родственных кодировок разная, собственно это их и отличает друг от друга. utf8_general_ci – работает немного быстрее, поэтому предпочтение отдается именно этой кодировке. Разница разумеется мизерна, для того чтобы заметить это в действительности на производительности базы, однако такие сведения есть.

Опубликован: 08.08.2014 г.

См. также:

Как подсчитать количество записей по месяцам в MySQL?
Работа с базой данных в WordPress
SQL-запросы для смены домена в WordPress
Как изменить тип таблиц в MySQL?
Изменение кодировки таблиц в базе MySQL
Фильтрация по полю DateTime в MySQL
Меняем пароль root в MySQL 5.7
Исправление ошибок в базе MySQL

Комментарии

  1. xandros пишет:

    Именно geneTal_ci быстрее канешн ))

    1. htmaker пишет:

      опечатка), исправил)

  2. Михаэль пишет:

    Автору респект ну просто огромнейший, пол дня потратил что бы понять почему база utf-8 а в запросе ?????????? Оказалось база была в latin-1 :) Удачи и всякий благ.

    1. htmaker пишет:

      спасибо!)

  3. ЭГ пишет:

    Так ничего и не вышло. :(

  4. ЭГ пишет:

    С первой командой удалось изменить кодировку, но пришлось попотеть, вбивать таблицы по отдельности. Вторая команда не сработала. :)

  5. А пишет:

    ДЕРЖИТЕСЬ ПОДАЛЬШЕ ОТ UTF-8!!! ср1251 отличный выбор. Работает быстро мало места занимает и быстро сортируется. Для 2-у язычного кода, один из которого русский другой английский идеальный вариант! Лучше сконвертируйте наоборот...

    1. Юджин пишет:

      Уважаемый А ! Тогда переходите на KOI8-R это ваще огонь !!!
      Ну а если Вы не доросли до UTF-8 тогда не показывайте окружающим свою глубокую некомпетентность.
      Нас могут читать дети и они могут Вам поверить, а кто потом их психику лечить будет ?
      То-то и оно...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта