如何在mysql中插入utf-8 mb4字符(表情符号在ios5中)?

时间:2011-10-18 22:03:36

标签: iphone mysql ios5 utf8mb4

我使用的是mysql 5.5.10,其character_sets是

| 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         |

我从utf8为iOS5的表情符号改变了utf8mb4。它们由4byte代码表示。

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

它们是3F 3F 3F(Hex)。

我可以很好地存储iOS4的emojis,但不能存储iOS5。

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

请帮帮我。

2 个答案:

答案 0 :(得分: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

一旦您的应用程序的每个级别都支持新字符,您应该能够使用它们而不会有任何损坏。

答案 1 :(得分:65)