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

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

但当我插入3个微笑表情符号时,"??"在mysql中.

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

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

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

请帮帮我.

推荐答案

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

这里还有其他一些东西需要判断:

  • 除了设置客户端&;服务器字符集,例如.

    如果你的数据已经在utf8字符集中,它应该转换成utf8mb4在没有任何问题的地方.一如既往,在try 之前备份数据!

  • 还要确保应用层将其数据库连接的字符集设置为utf8mb4.仔细判断是否真的发生了这种情况——如果您运行的是所选框架的mysql客户端库的旧版本,它可能没有使用utf8mb4支持进行编译,并且无法正确设置字符集.如果没有,您可能需要自己更新或编译它.

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

一旦应用程序的每个级别都能支持新角色,您就应该能够使用它们而不会出现任何损坏.

Mysql相关问答推荐

对象NotExecutabletry 在远程SQL服务器上执行SQL时出错,并使用SQLAchemy.Create_engine

从MySQL JSON列中检索数组中的所有答案

是否可以使用 IN 或 NOT IN 从没有关联其他表中任何行的表中返回这些名称?

有没有比使用 MySQL 计划事件更好的方法来更新我的数据库表中的列?

SQL使用LIMIT获取结果和结果中的行数

mysql insert into select join - 通过连接表将值从一列复制到另一表

当用它的别名替换 (MAX(s.salary) - MIN(s.salary) 它将不起作用.. 为什么?

Select 分组产品的数量和每个产品的最便宜的价格

如何将内置的时间浏览器过滤器反映到 Grafana 中的 mysql 查询中?

为什么这个 NOT NULL 到 NULL 迁移会触发大量 I/O 操作?

我在查询中没有得到正确的结果

具有别名主机的 ssh 反向 mysql tunel

让 MySQL 在 OSX 10.7 Lion 上运行

一次查询 MySQL 插入多行

MySQL - 表'my_table'没有被锁定表锁定

MySQL 在每个唯一值第一次出现时 Select 行

将mysql查询输出存储到shell变量中

在 Ubuntu 上安装 mysql gem 的困难

mysql错误'TYPE = MyISAM'

cron 启动的 mysqldump 和密码安全