正确处理外来字符/表情符号

时间:2012-08-08 01:13:10

标签: php javascript mysql unicode emoji

无法显示外国字符和表情符号。

编辑澄清

用户在文本字段中键入表情符号字符,然后将其发送到服务器(php)并保存到数据库(mysql)中。在显示文本时,我们从服务器获取一个JSON编码的字符串,该字符串在客户端进行解析和显示。

问题:保存在数据库中的“奖杯”表情符号的字符为

%uD83C%uDFC6

当它被发送回客户端时,我们看不到表情符号图片,我们实际上看到了原始编码文本。

我们如何让客户端将该文本作为表情符号字符阅读并显示图像?

(所有在iphone /手机游戏中)

谢谢!

3 个答案:

答案 0 :(得分:1)

检查客户端,Web服务器和数据库表使用的编码。确保它们都使用可以处理您关注的字符的编码。

答案 1 :(得分:1)

看起来问题是我的MySql编码... utf8mb4会允许它 - 不幸的是它在MySQL v5.5之前不可用

答案 2 :(得分:0)

  

保存在数据库中的“奖杯”表情符号的字符读作%uD83C%uDFC6

然后您的数据已被破坏。 %u转义特定于JavaScript escape()函数,通常不应使用它。确保您的textarea-> PHP处理使用符合标准的编码,例如encodeURIComponent,如果您需要将JS变量放入URL查询中。

然后,在PHP层中使用正确的原始UTF-8字符串,您可以担心让MySQL存储像Basic Multilingual Plane之外的表情符号这样的字符。最好的方法是具有utf8mb4排序规则的列;如果不可用,请尝试二进制列,这将允许您存储任何字节序列(当它返回时将其视为UTF-8)。但是,这样你就不会得到不区分大小写的比较。