2012-04-14 109 views
8

在阅读了关于表情符号的所有主题之后,我就要求提供一些帮助。 问题似乎几乎是一样的:我有一个iPhone应用程序通过PHP表情符号发送到MySQL DB,我可以在记录上看到一些符号,例如“伞”和“云”,但其他不是(生气的脸,笑脸和其他)。表情符号在MySQL和PHP:为什么一些符号是其他不是?

为什么有些是和其他不?

  • MySQL的整理:utf8mb_unicode_ci
  • 表归类:utf8mb_unicode_ci
  • 领域,VARCHAR归类:utf8mb_unicode_ci

PHP设置:

mysql_query("SET CHARACTER SET utf8mb4"); 
    mysql_query("SET NAMES utf8mb4"); 

的符号不显示该记录内显示为问号“?”

回答

11

一些表情符号使用3个字节进行编码。如果您的计算机支持的表情符号,这里有3个字节的表情符号:

☺❤✨❕❔✊✌✋☝☀☔☁⛄⚡☎➿✂⚽⚾⛳♠♥♣♦〽☕⛪⛺⛲⛵✈⛽⚠ ♨1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣#⃣⬆⬇⬅➡↗↖↘↙◀▶⏪⏩♿㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌©®™

其余使用4个字节的编码除非你将mysql更新为utf8mb4,否则将无法工作。听起来你没有以某种方式完全升级到utf8mb4。

+0

非常感谢你杰克,我会在你的方向搜索。现在我非常确定我将目标字段和表格转换为正确的排序规则,但我必须错过一些东西。我会更新这个话题。 Thanx – Fabrizio 2012-05-02 19:41:12

+0

我已经验证,你是正确的3个字节的表情符号表示确定。我想念的是我需要改变整理的地方。我必须记录表情符号的字段已经得到utf8mb4_unicode_ci整理。包含该字段的表已获得utf8mb4_unicode_ci排序规则。在常规设置(phpMyAdmin)中,我看到MySQL整理是utf8_general_ci,当我尝试更改为utf8mb4_unicode_ci时,它似乎自动回到之前的设置。我不知道问题是否出于这个原因。我会继续搜索。 – Fabrizio 2012-05-03 12:20:08

+3

@Fabrizio我写(http://mathiasbynens.be/notes/mysql-utf8mb4)如何从'utf8'升级到'utf8mb4'的详细指南] - 也许它可以帮助你。 – 2012-08-07 06:53:33