如何在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;
确保所有表的默认字符集和文本字段都转换为utf8mb4ALTER 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步:修复和优化所有表格
希望这可以帮助。