Проблемы с набором символов в MySQL
Я использую VeloSurf с MySQL на Mac без проблем с кодированием, но когда я переключаюсь на компьютер с Linux, значения, которые я получаю от VeloSurf, не кодируются правильно.
Я обнаружил, что это может быть проблема с набором символов подключения по умолчанию. На Mac я получил:
mysql> show variables like "collation_%";
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
mysql> show variables like "character_set_%";
+--------------------------+--------------------------------------------------------+
| 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 | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.5.11-osx10.6-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+
8 rows in set (0.00 sec)
Пока на машине Linux, у меня есть:
mysql> show variables like 'collation_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | utf8_general_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
Сортировка базы данных и набор символов устанавливаются при создании базы данных. Моя проблема в том, что я не могу изменить наборы символов по умолчанию для клиента / соединения / результатов.
Кроме того, кажется, нет никакого способа установить charset с velosurf, когда соединение установлено.
Какие-либо предложения?
2 ответа
Я обнаружил, что MySQL всегда будет использовать набор символов по умолчанию при подключении от имени пользователя root. Но это работает нормально для ограниченных пользователей (то, что я должен был делать с самого начала).
Эта "особенность", похоже, специфична для Linux. По крайней мере, это не происходит в OS X.
Есть флаг командной строки для MySQL, чтобы установить набор символов. Вы могли бы попробовать это? --default-символьного набора =utf8