57

我正在使用 mysql 5.5.10,它的字符集是

| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | utf8mb4_general_ci         |
| collation_database       | utf8mb4_general_ci         |
| collation_server         | utf8mb4_general_ci         |

我将 utf8mb4 从 utf8 更改为 iOS5 的表情符号。它们由 4 字节代码表示。

但是当我插入 3 个笑脸表情符号时,'???' 是在mysql中。

它们是 3F 3F 3F(十六进制)。

我可以很好地存储 iOS4 的表情符号,但不能存储 iOS5 的。

我如何存储 iOS5 的表情符号?

请帮我。

4

2 回答 2

93

4 字节 Unicode 字符尚未广泛使用,因此并非所有应用程序都完全支持它们。正确配置后,MySQL 5.5 可以正常使用 4 字节字符 - 检查您的其他组件是否也可以使用它们。

这里还有一些其他的事情要检查:

  • 确保所有表格的默认字符集和文本字段都转换为 utf8mb4,此外还要设置客户端和服务器字符集,例如 ALTER TABLE mytable charset=utf8mb4, MODIFY COLUMN textfield1 VARCHAR(255) CHARACTER SET utf8mb4,MODIFY COLUMN textfield2 VARCHAR(255) CHARACTER SET utf8mb4;等等。

    如果您的数据已经在 utf8 字符集中,它应该在适当的位置转换为 utf8mb4,没有任何问题。与往常一样,在尝试之前备份您的数据!

  • 还要确保您的应用层将其数据库连接的字符集设置为 utf8mb4。仔细检查这是否真的发生了——如果您正在运行您选择的框架的 mysql 客户端库的旧版本,它可能没有使用 utf8mb4 支持进行编译,并且它不会正确设置字符集。如果没有,您可能必须自己更新或编译它。

  • 通过 mysql 客户端查看数据时,请确保您在可以显示表情符号的机器上,并SET NAMES utf8mb4在运行任何查询之前运行 a。

一旦您的应用程序的每个级别都可以支持新字符,您应该能够在没有任何损坏的情况下使用它们。

于 2011-11-13T06:01:04.073 回答
66

我最近写了一篇关于如何从 MySQL 切换utf8utf8mb4. 如果您按照那里的步骤操作,一切都应该正常工作。以下是流程中每个单独步骤的直接链接:

希望这可以帮助。

于 2012-08-07T06:40:12.597 回答