Приведу пример смены кодировки MySQL базы данных и таблиц.
Перед любыми действиями над важными данными необходимо обязательно сделать резервную копию, например так:
Для теста подключимся к MySQL и создадим пару новых баз данных без указания кодировки и с указанием:
Создадим тестовую таблицу в первой базе и посмотрим её кодировку:
Создадим тестовую таблицу во второй базе и посмотрим её кодировку:
Посмотрим также кодировку обеих баз данных:
Посмотреть кодировку колонки в конкретной таблице можно так:
В моём случае таблица в первой базе была с кодировкой latin1_swedish_ci, так как она является стандартной, а во второй utf8_general_ci так как я её заранее указал.
Посмотреть таблицу возможных кодировок можно такими запросами:
Посмотреть существующие базы данных можно так:
Посмотреть существующие таблицы в базе:
Теперь сменим кодировку первой базы и её таблицы на utf8 и сразу проверим:
Если нужно изменить кодировку в sql файле, то откроем его в редакторе Notepad++ преобразуем например в UTF-8/без BOM, а также если в начале файла указана кодировка в SET NAMES, изменим её там, после этого можно импортировать файл в базу.
Узнаем кодировку БД в MySQL
Прежде всего создаем БД через консоль
mysql> CREATE DATABASE `my_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
Далее у нас есть два пути :
1. Узнать через ту же самую консоль
mysql> use my_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SHOW VARIABLES LIKE «character\_set\_database»;
+————————+——-+
| Variable_name | Value |
+————————+——-+
| character_set_database | utf8 |
+————————+——-+
1 row in set (0.00 sec)
2. Узнать через тех файл базы
# cat /var/lib/mysql/my_db/db.opt
default-character-set=utf8
default-collation=utf8_general_ci
This entry was posted on Пятница, июля 8, 2011 at 16:20 and is filed under Новости. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Дата публикации: 2016-07-13
От автора: вы зачем полное ведро баз на мусорку несете выбрасывать? Сервер китайский попался, и все строки иероглифами отображаются? Так кодировка базы данных MySQL не та, наверное. Кто ее закодирует, она же база? Понятно! Идите, гражданин дальше. Не обращаем на него внимания. Сегодня мы познакомимся с кодировками в MySQL.
Зачем кодировать БД?
Сразу хочу вас заверить, что у нас ни одной «пьющей» базы нет. Поэтому данная кодировка никак не связана с чрезмерным употреблением «горячительных» напитков. Наоборот, все БД кодируются для того, чтобы пользователи (то есть мы с вами) могли прочитать содержащуюся в них информацию. Понятно, что непонятно и без полулитра не разберешься? . Давайте обойдемся пока без этого крайнего средства. Сейчас все поясню!
Код MySQL, как и любая другая информация в вычислительной технике, задается с помощью сочетания единицы и нуля, которые образуют биты. Вспоминаете? Это ведь основы информатики, которые все мы проходили в школе.
В мире существует множество текстовых кодировок (сочетаний 0 и 1), но в современности все они более-менее стандартизированы. Хотя и сейчас можно наткнуться на «абракадабру», если неправильно задать кодировку.
Как создать сайт самому?
Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!
На данном этапе развития всемирной паутины самыми распространенными являются 3 типа кодировок:
Мы не будет сильно «зарываться» в теоретическом ворохе. Для получения более детальной информации перейдите по расположенным выше ссылкам на соответствующие публикации в Википедии.
Для нас самой главной кодировкой базы данных MySQL является UTF-8. Это значит, что в ней используется 8-битный Юникод для представления всех символов. Благодаря широкой поддержке данной кодировки в Сети и на прикладном уровне вы можете быть уверены, что записи в базе будут сохранены в читаемом виде (без «абракадабр»).
Где ее искать?
Немного пробежимся по интерфейсу phpMyAdmin. Зайдя на первую страницы программы, обратите внимание на раздел «Общие настройки».
Параметр «Сопоставление кодировки соединения с MySQL» устанавливает, с какой кодировкой должен сравниваться формат полученных данных при подключении к серверу СУБД. В этой программной оболочке кодировку можно задать вручную.
В «родных» утилитах СУБД (mysqladmin, mysqlimport и других) кодировка таблиц MySQL берется из настроек операционной системы ПК. В случае их отсутствия устанавливается значение, заданное по умолчанию. Чаще всего, это кодировка latin1.
При соединении с СУБД клиентская сторона с помощью значений нескольких системных переменных говорит MySQL, какую кодировку использовать при обработке и отображении данных из БД.
Системные переменные и их значения
Архитектура MySQL построена на основе «клиент-сервер». Системные переменные (точнее их значения) используются при установке соединения клиента и сервера для корректного отображения всех данных, их обработки и поддержания сетевого сеанса.
Для ознакомления с установленными значениями переменных системы СУБД в phpMyAdmin нужно в последнем пункте верхнего меню «Еще» выбрать «Переменные».
После этого вам станут доступны для просмотра и редактирования все системные переменные. Настоятельно рекомендую не менять установленных значений, если не знаете «что почем». На устранение причиненного вреда может уйти много времени. Также это чревато плохим настроением, преждевременной сединой и проявлением других симптомов профессиональных болезней сисадминов .
Также список всех переменных (в том числе и тех, которые нужны для настройки кодировка MySQL) можно получить с помощью команды show variables.
Вернемся к полученному списку переменных, и остановимся на тех, которые начинаются с charset. Краткое описание тех, которые могут пригодиться:
character_set_client – указана кодировка, в которой будут поступать данные с клиентской стороны.
character_set_connection – устанавливает кодировку соединения.
Как создать сайт самому?
Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!
character_set_database –набор символов, используемы в БД по умолчанию.
character_set_results – кодировка, в которой сервер отправит данные клиенту.
character_set_server –используемая по умолчанию на сервере.
Вот тут перед описанием следующей группы переменных, необходимых для того, как узнать кодировку базы MySQL, следует покопаться в теории.
Под кодировкой мы подразумеваем набор символов, применяемых для определенной структуры данных (базы, таблицы, поля). Но есть еще такое понятие как «представление» (collation), которая соответствует конкретному языку и используется при сравнении и упорядочивания записей.
Например, есть кодировка UTF-8. Существует огромное количество представлений в рамках одной кодировки. Нельзя сравнивать данные, «представленных» в разных наборах символов. Это можно осуществлять только в рамках одной кодировки. Последние 3 переменные как раз и показывают установленные представления.
Разрешенные сравнения для конкретной кодировки на текущем экземпляре сервера, можно узнать с помощью команды show collation. Например: