Как сделать кодировку mysql

Обновлено: 04.07.2024

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

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

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

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

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

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

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

Войдите в phpMyAdmin и выберите необходимую базу данных из списка, кликнув по её названию:

Как изменить кодировку для всех таблиц в MySQL 1

Как изменить кодировку для всех таблиц в MySQL 2

Скопируйте запрос ниже:

нужная_кодировка — кодировка, которую нужно применить;

имя_базы — имя базы данных.

Перейдите в раздел SQL:

Как изменить кодировку для всех таблиц в MySQL 3

Вставьте запрос из шага 3 в окно запроса MySQL и выполните его, нажав Вперёд. В примере ниже мы сформировали список запросов для всех таблиц базы данных, который нужно выполнить, чтобы изменить кодировку на utf8 и на сопоставление кодировки utf8_general_ci.

Как изменить кодировку для всех таблиц в MySQL 4

В качестве ответа на запрос появится список запросов для смены кодировки каждой таблицы. Раскройте вкладку Параметры, установите чекбокс напротив пункта Полные тексты и нажмите Вперёд:

Как изменить кодировку для всех таблиц в MySQL 5

Как изменить кодировку для всех таблиц в MySQL 6

Вернитесь на вкладку SQL. Вставьте запросы в окно запроса MySQL и нажмите Вперёд:

От автора: вы зачем полное ведро баз на мусорку несете выбрасывать? Сервер китайский попался, и все строки иероглифами отображаются? Так кодировка базы данных MySQL не та, наверное. Кто ее закодирует, она же база? Понятно! Идите, гражданин дальше. Не обращаем на него внимания. Сегодня мы познакомимся с кодировками в MySQL.

Зачем кодировать БД?

Код MySQL, как и любая другая информация в вычислительной технике, задается с помощью сочетания единицы и нуля, которые образуют биты. Вспоминаете? Это ведь основы информатики, которые все мы проходили в школе.



Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

На данном этапе развития всемирной паутины самыми распространенными являются 3 типа кодировок:

Где ее искать?


При соединении с СУБД клиентская сторона с помощью значений нескольких системных переменных говорит MySQL, какую кодировку использовать при обработке и отображении данных из БД.

Системные переменные и их значения



Также список всех переменных (в том числе и тех, которые нужны для настройки кодировка MySQL) можно получить с помощью команды show variables.


Вернемся к полученному списку переменных, и остановимся на тех, которые начинаются с charset. Краткое описание тех, которые могут пригодиться:

character_set_client – указана кодировка, в которой будут поступать данные с клиентской стороны.

character_set_connection – устанавливает кодировку соединения.


Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

character_set_database –набор символов, используемы в БД по умолчанию.

character_set_results – кодировка, в которой сервер отправит данные клиенту.

character_set_server –используемая по умолчанию на сервере.

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


Разрешенные сравнения для конкретной кодировки на текущем экземпляре сервера, можно узнать с помощью команды show collation. Например:


ПОМНИТЕ! Всегда создавайте бекапы, они вам помогут вернуть все данные, если пойдет что-то не так.

Установка стандартной кодировки для Mysql

Например, я сейчас, установлю кодировку utf8 для mysql, для этого открываем файл:

utf8_unicode и utf8_general не то же самое, но они очень похожи.

Преобразование кодировки для пустой базы данных

Чтобы преобразовать кодировку в пустой БД, выполните:

Преобразование кодировки для базы данных с данными

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

Преобразование кодировки для таблицы с данными

Необходимо установить кодировку по умолчанию для всех существующих таблиц и их столбцов. Это предполагает, что текущие данные на самом деле используют кодировку и чтобы изменить кодировку с одной на другую, выполните:

Преобразование кодировки с помошью vi/vim для базы данных содержащие таблицы

Вот ряд действий, которые вы должны предпринять если хотите сменить кодировку:

  1. Конечно же, делаем бэкап (мало ли что пойдет не так):
  2. Скопирую созданный бекап для дальнейшей правки:
  3. Открываем файл для изменения кодировки:
  4. Вводим команды:
  • :%s/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci/
  • :%s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/
  • :wq

Можно выполнить команду и сменить кодировку для таблиц с командной строки:

Для удобства, у меня есть готовый скрипт для смены кодировки на UTF8, вы можете его скачать:

Чтобы запустить, выполните:

Скрипт будет просить некоторую информацию, такую как логин и пароль от mysql. Если нужно будет использовать другую кодировку ( у меня прописана UTF8), то измените ее в данном скрипте, если не знаете как, напишите мне и я помогу.

PS: Я использовал текстовый редактор — vi/vim.

Читайте также: