php - 如何恢复存储在普通 utf8 中的 4 字节表情符号字符的正确编码 - 就像这样 : 😊?

标签 php unicode encoding character-encoding emoji

是否可以再次将表情符号 3 或 4 字节字符串重新编码为表情符号?

我继承了一个 utf8_unicode_ci 编码的 MySQL Innodb 表。这些表情符号 4 字节字符串无处不在。是否可以将它们翻译回表情符号?

第一步是将字符集修改为utf8mb4。这将像 ð����£ 这样的所有字符串更改为像这样的字符串:ðŸ∼Š

但我真正想要的是将 ðŸ∼Š 翻译成类似 smiley emoji 的内容. (我不知道 ðŸ∼Š 是否真的是笑脸)

最佳答案

灵感来自 Ignacio Vazquez-Abrams' comment .下一个 python 代码片段显示了原始过程 EmojiMojibake反之亦然(修复):

print ( "\nEmoji to mojibake (origin):")
for emojiChar in ['😊','😣','👽','😎']:
    print ( emojiChar, emojiChar.encode('utf8').decode('cp1252'))

print ( "\nmojibake to Emoji (repair):")
for mojibakeString in ['😊','😣','👽','😎','🙇']:
    print ( mojibakeString, mojibakeString.encode('cp1252').decode('utf8'))

知道这个问题被标记为php而不是 python;让我希望类似的 php 解决方案可以非常接近......

输出:

==> chcp 65001
Active code page: 65001

==> D:\test\Python\20108312.py

Emoji to mojibake (origin):
😊 😊
😣 😣
👽 👽
😎 😎

mojibake to Emoji (repair):
😊 😊
😣 😣
👽 👽
😎 😎
🙇 🙇

==>

Python 版本:

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32

关于php - 如何恢复存储在普通 utf8 中的 4 字节表情符号字符的正确编码 - 就像这样 : 😊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108312/

相关文章:

php - 简单的数据库设计问题

node.js - 如何通过 Node.js -e "evaluate script"命令行开关使用 Unicode 文字

c++ - 是否有任何库可以确定一个数值是否可以转换为特定字符集中的有效、可打印且有意义的字符?

python收集ascii和utf-8的东西

php - 在数组内搜索数组

php - 如何通过 php 移动 eDirectory 条目?

javascript - jQuery AJAX POST 不将数据传递给 PHP 脚本

Python .lower 似乎没有正确地小写所有 unicode 字符(Python 2.7)

linux - 如何为PostgreSQL数据库设置编码?

mysql - 非英语脚本中的数据在 MySQL 中显示为 "??"