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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我使用的是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         |

我把utf 8mb4从UTF 8换成iOS 5的表情符号。它们由4字节代码表示。

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

它们是3F3F3F(Hex)。

我能很好地保存iOS 4的表情,但不能存储iOS 5的表情。

我怎么能储存iOS 5的表情呢?

请帮帮我吧

提问于
用户回答回答于

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;等等。 如果数据已经在UTF 8字符集中,则应该将其转换为utf8mb4,没有任何问题。一如既往,在尝试之前备份您的数据!
  • 还要确保应用程序层将其数据库连接的字符集设置为utf8mb4。重复检查,这实际上正在发生--如果正在运行所选框架的MySQL客户端库的旧版本,它可能没有使用utf8mb4支持编译,而且也不会正确设置字符集。如果没有,可能需要自己更新或编译它。
  • 当通过MySQL客户端查看数据时,请确保在一台可以显示表情符号的机器上,并运行SET NAMES utf8mb4在运行任何查询之前。

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

用户回答回答于

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

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

希望这能帮上忙。

扫码关注云+社区