Для проверки всех параметров character и collation нужно выполнить два запроса :
show variables like "%character%"; show variables like "%collation%";
И по-умолчанию mysql выдаст что-то подобное...
mysql> show variables like "%character%"; show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
а именно некоторые параметры находятся в кодировке latin1 и в сопоставлении latin1_swedish_ci ;
Исправим это... выставим по-умолчанию utf-8 :
В разделе [mysqld] нужно прописать такие параметры :
И снова выполнить проверку :
show variables like "%character%"; show variables like "%collation%";
Теперь ответ будет таким:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
После данной процедуры можно в запросах не указывать кодировку и сопоставление, так как всё будет выполнено в utf-8 и utf8_unicode_ci а также будет корректный вывод кирилици с базы ;
Для этого можете прямо с консоли по быстрому создать тестовую базу и добавить какой-то кирилический текст :
----
Подробнее о смене кодировки тут :
http://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf
show variables like "%character%"; show variables like "%collation%";
И по-умолчанию mysql выдаст что-то подобное...
mysql> show variables like "%character%"; show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
Исправим это... выставим по-умолчанию utf-8 :
Для этого нужно подправить главный файл конфигов (и желательно это делать сразу после установки MySQL) my.cnf полный путь которого => /etc/mysql/my.cnf
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
После, перезапустить mysql (sudo service mysql restart)И снова выполнить проверку :
show variables like "%character%"; show variables like "%collation%";
Теперь ответ будет таким:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
После данной процедуры можно в запросах не указывать кодировку и сопоставление, так как всё будет выполнено в utf-8 и utf8_unicode_ci а также будет корректный вывод кирилици с базы ;
Для этого можете прямо с консоли по быстрому создать тестовую базу и добавить какой-то кирилический текст :
mysql> CREATE DATABASE test_db_xyz;
mysql> USE test_db_xyz;
mysql> CREATE TABLE `test_db_xyz`.`table_xyz` ( `id` INT(2) NOT NULL AUTO_INCREMENT , `text_in` TEXT NOT NULL , PRIMARY KEY (`id`));
mysql> INSERT INTO `table_xyz` (`id`, `text_in`) VALUES (NULL, 'Рыбатекст поможет дизайнеру, верстальщику, вебмастеру сгенерировать несколько абзацев более менее осмысленного текста рыбы на русском языке.');
----
Подробнее о смене кодировки тут :
http://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf
Комментариев нет:
Отправить комментарий