的Mysql 5.6 UTF8(utf8mb4)仍显示不正确的字符
问题描述:
我做我的数据库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倍。
答
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
等)已经在列上。