mysql - 如何查看 MySQL 中列的 utf8mbf 排序规则?

标签 mysql sql character-encoding

这是我使用的命令:

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/

相关文章:

sql - 针对特定值生成索引

php - SQL 查询计算重复出现条目的天数

mysql - 每行内嵌套表格

sql - SQL 命令中的 TIMESTAMP 和 CURRENT_TIMESTAMP 问题

javascript - 如何使用 PDO 从 php 文件插入数据?

php - 存储数据的奇怪字符编码,旧脚本显示它们很好,新脚本却没有

windows - 使用 MME 和 DirectMusic 时的 ANSI 或 OEM 代码页?

Python3错误的字符串编码

mysql - PHP 循环 while else

php - Wordpress 对两个表的自定义查询以获取分层数据