2011-06-15 62 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