2011-06-15 87 views
2

我在Mac上使用带有MySQL的velosurf,没有任何编码问题,但是当切换到Linux机器时,我从velosurf得到的值编码不正确。MySQL连接字符集问题

我发现它可能是默认连接字符集的问题。在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) 

数据库整理和字符集,当我创建数据库进行设置。我的问题是我无法更改客户端/连接/结果的默认字符集。

此外,似乎没有任何方法可以在连接启动时用velosurf设置字符集。

有什么建议吗?

+2

'set names utf8;' – 2011-06-15 10:45:58

回答

1

我发现MySQL以root身份连接时总是使用默认字符集。但是对于有限的用户来说它确实可行(我从一开始就应该这样做)。

此“功能”似乎是Linux特定的。至少在OS X中不会发生这种情况。

+0

我使用除root以外的用户名进行测试,并且仍然相同。 – Salar 2016-12-28 13:14:42

1

MySQL有一个命令行标志来设置字符集。你可以试试吗? --default-character-set = utf8

+0

这可能是他正在谈论的内容,'--default-character-set = utf8'似乎并没有覆盖已定义的字符集在.ini/.cnf中。我的Windows MariaDB安装甚至没有.ini,'--default-character-set = utf8'不会覆盖latin1的默认值。 – JohnB 2012-03-25 16:15:22