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

我正在使用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更改了utf8mb4为iOS5的表情符号。 它们由4字节代码表示。

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

他们是3F 3F 3F(hex)。

我可以存储iOS4的emojis,但不是iOS5的。

我怎么能存储iOS5的emojis?

请帮帮我。

4字节的Unicode字符还没有广泛使用,所以并不是所有的应用程序都完全支持它们。 如果configuration正确,MySQL 5.5可以正常工作4字节,请检查其他组件是否也可以使用。

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

  • 除了设置客户端和服务器字符集,例如ALTER TABLE mytable charset=utf8mb4, MODIFY COLUMN textfield1 VARCHAR(255) CHARACTER SET utf8mb4,MODIFY COLUMN textfield2 VARCHAR(255) CHARACTER SET utf8mb4;确保所有表的默认字符集和文本字段都转换为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。 仔细检查这实际上是发生的 – 如果你正在运行你select的框架的mysql客户端库的一个较老的版本,它可能没有被编译与utf8mb4的支持,它不会正确设置字符集。 如果没有,你可能需要更新它或自己编译它。

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

一旦您的应用程序的每个级别都可以支持新angular色,您应该可以使用它们而不会造成任何损坏。

我最近写了一个关于如何从MySQL的utf8切换到utf8mb4的详细指南 。 如果你按照这里的步骤,一切都应该正常工作。 这里是直接链接到过程中的每个单独的步骤:

  • 第1步:创build一个备份
  • 第二步:升级MySQL服务器
  • 步骤3:修改数据库,表格和列
  • 步骤4:检查列和索引键的最大长度
  • 第5步:修改连接,客户端和服务器字符集
  • 第6步:修复和优化所有表格

希望这可以帮助。