0

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

编辑澄清

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

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

%uD83C%uDFC6

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

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

(全部在 iphone / 移动 safari 上)

谢谢!

4

3 回答 3

1

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

于 2012-08-08T02:13:49.203 回答
1

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

于 2012-08-08T23:27:29.270 回答
0

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

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

然后,在您的 PHP 层中有适当的原始 UTF-8 字符串,您可以担心让 MySQL 存储基本多语言平面之外的字符,例如表情符号。最好的方法是带有utf8mb4排序规则的列;如果这不可用,请尝试二进制列,这将允许您存储任何字节序列(当它返回时将其视为 UTF-8)。但是,这样一来,您将不会进行不区分大小写的比较。

于 2012-08-10T11:17:29.970 回答