这是我使用的命令:
ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci;
效果很好。现在我需要为列设置utf8mb4_unicode_ci
(因为当前字符显示为???
)。无论如何,这是我的新命令:
ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8 COLLATE utf8mb4_unicode_ci;
但遗憾的是 MySQL 抛出:
ERROacR 1253 (42000): COLLATION 'utf8mb4_unicode_ci' is not valid for CHARACTER
有什么想法吗?
最佳答案
COLLATION
名称的第一部分必须与CHARACTER SET
名称匹配。
表情符号和部分汉字需要字符集utf8mb4
。
让我们回到“真正的”问题——问号。
COLLATION
指的是排序和排序的规则,而不是编码。
CHARACTER SET
指的是编码。这在所有阶段都应该保持一致。问号来自于不一致。
Trouble with UTF-8 characters; what I see is not what I stored指出这些可能是问号的嫌疑对象:
- 要存储的字节未编码为 utf8/utf8mb4。解决这个问题。
- 数据库中的列不是字符集 utf8mb4。如果您需要 4 字节 UTF-8,请修复此问题。 (使用 SHOW CREATE TABLE。)
- 此外,请检查读取期间的连接是否为 UTF-8。详细信息取决于进行连接的应用程序。
关于mysql - 如何查看 MySQL 中列的 utf8mbf 排序规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51346380/