【发布时间】:2013-12-05 04:13:19
【问题描述】:
是否可以再次将 emoji 3 或 4 字节字符串重新编码为 emoji?
我继承了一个带有 utf8_unicode_ci 编码的 MySQL Innodb 表。这些 emoji 4 字节字符串无处不在。是否可以将它们翻译回表情符号?
第一步是将character set 修改为utf8mb4。这将所有像 ð��£ 这样的字符串更改为像这样的字符串:😊。
但我真正想要的是将😊 翻译成 之类的东西。 (不知道😊是不是真的笑脸)
【问题讨论】:
-
您在说什么“4 位字符”?将表情符号翻译成表情符号是什么意思?这看起来像是字符编码不匹配。显示一些实际数据(十六进制转储或其他提供真实数据的东西——“�”是表示字符级数据错误的替换字符,不告诉数据是什么)。
-
@JukkaK.Korpela: Emoji 在 BMP 之外,这意味着您需要 4 个字节(而不是位)才能将它们编码为 UTF-8。
-
我将排序规则修改为 utf8mb4,现在替换字符看起来像
😊。但我仍然不确定如何看到实际的表情符号。 -
@Ignacio 一些(好吧,大多数)表情符号在 BMP 之外,但也有一些在里面。例如⛄。 ??????
-
@Ryan 事后将列从
utf8更改为utf8mb4不一定有帮助。如果您尝试将 BMP 之外的字符存储在utf8列中,则数据已经无法修复。我们需要更多关于原始数据的细节来说明是否可以做任何事情。而“ðŸ∼Š”不是笑脸,“ðŸ∼Š”是“ðŸ∼Š”。如果正确处理了编码 ????会是????。
标签: php unicode encoding character-encoding emoji