2011-10-18 31 views
53

我使用的MySQL 5.5.10,其character_sets是如何在MySQL中插入utf-8 mb4字符(在ios5中的表情符号)?

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

我改变utf8mb4从UTF8对iOS5的的表情符号。它们由4字节代码表示。

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

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

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

我该如何存储iOS5的emojis?

请帮帮我。

+1

mysql phpadmin显示???,但iOS应用程序可以显示表情符号。 –

+0

参见http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored/,尤其是“问号”的讨论。 –

回答

91

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

如何验证第二步? – BufferStack

+0

'grep -R“SET NAMES”*' – redolent

+0

如果'textfield1'被编入索引,则可能会遇到麻烦,因为索引被限制为767个字节。 (有很多讨论这个问题的线程;查找“191”。) –

63
+0

嗨,在第3步,我必须为我的数据库中的每个表,列创建吗?或者只是为了表格和列我想存储emojis?因为现在我只改变了一列,并且一旦设置了'SET character_set_results = utf8mb4;'我无法在任何表上执行任何查询。我遇到了一个服务器发送不知名的charsetnr。请报告错误! (即使对于select查询) – iamserious

+0

@iamserious - 不要只设置'... results',设置所有3件事情,就像'SET NAMES'或连接参数一样。 –

+0

伟大的教程!你知道为什么在my.cnf中设置'character-set-server = utf8mb4'后,在对数据库运行查询后,结果是字符集服务器实际上是latin1吗?你知道为什么不更新吗?非常感谢你! – johnnyfittizio

相关问题