2015-10-16 112 views
0

我做我的數據庫utf8mb4的轉換,但它仍然返回不正確的UTF8字符:的Mysql 5.6 UTF8(utf8mb4)仍顯示不正確的字符

例如,Café成爲Café

這裏是我的mysql排序規則變量:

mysql> SHOW VARIABLES LIKE 'char%'; SHOW VARIABLES LIKE 'collation%'; 
+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | utf8mb4     | 
| character_set_connection | utf8mb4     | 
| character_set_database | utf8      | 
| character_set_filesystem | binary      | 
| character_set_results | utf8mb4     | 
| character_set_server  | utf8mb4     | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 
8 rows in set (0.00 sec) 

+----------------------+--------------------+ 
| Variable_name  | Value    | 
+----------------------+--------------------+ 
| collation_connection | utf8mb4_unicode_ci | 
| collation_database | utf8_general_ci | 
| collation_server  | utf8mb4_unicode_ci | 
+----------------------+--------------------+ 

另外,自從轉換到utf8以來,我的數據庫至少減慢了10倍。

回答

1

Mojibake。這是

的一個典型案例
  • 客戶端中的字節在utf8mb4(good)中正確編碼。
  • 您與SET NAMES latin1(或set_charset('latin1')或...)連接,可能是默認情況下。 (它應該是utf8mb4。)
  • 表中的列可能是也可能不是CHARACTER SET utf8mb4,但應該是這樣的。

如果需要修正這些數據需要「2步ALTER」,像

ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...; 
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8mb4 ...; 

,其中長度足夠大,其他的「...」有其他任何(NOT NULL等)已經在列上。