Mysql 5.6 UTF-8 (utf8mb4)仍然显示错误的字符



我将数据库转换为utf8mb4,但它仍然返回不正确的UTF8字符:

例如,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 |
+----------------------+--------------------+

同时,我的DB已经慢了至少10倍,因为切换到utf8

莫吉贝克。这是典型的

  • 您在客户端的字节被正确编码为utf8mb4(好)。
  • 您连接到SET NAMES latin1(或set_charset('latin1')或…),可能是默认的。(应该是utf8mb4)
  • 表中的列可能是也可能不是CHARACTER SET utf8mb4,但它应该是。

如果您需要修复数据,则需要"两步ALTER",例如

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

,其中长度足够大,另一个"…"包含已经在列上的其他内容(NOT NULL等)

相关内容

最新更新