如何将一串 utf-8 字节转换为 python 中的 unicode 表情符号
How to convert a string of utf-8 bytes into a unicode emoji in python
所以我下载了 Facebook Messenger 消息,它们是包含大量信息的几个 json 文件。这是 json:
的片段
"messages": [
{
"sender_name": "sample name",
"timestamp_ms": 1649215459023,
"content": "sample message",
"reactions": [
{
"reaction": "\u00f0\u009f\u0098\u0086",
"actor": "actor name"
}
],
"type": "Generic",
"is_unsent": false
}
]
我想做的是阅读这个 json 然后用它创建一个数据框,但是由于所有非 ASCII 字符都已替换为 \u00f0\u009f\u0098\u0086
类型的代码,所以它不是例如将其识别为表情符号。
我的问题是,我需要做什么才能真正看到那些表情符号,而不是那些代码?我考虑过使用正则表达式来查找所有这些模式,但我不知道我可以用什么来替换它们。
是的,我在尝试解码 Facebook 消息转储时遇到了同样的问题。这是我解决它的方法:
string = "\u00f0\u009f\u0098\u0086".encode("latin-1").decode("utf-8")
# ''
原因如下:
- 此表情符号需要 4 个字节以 UTF-8 编码(
F0 9F 98 86
,请查看 this page 的底部)
- Facebook 可以为 JSON 文件使用 UTF-8,但他们选择了 printable ASCII。所以它将这 4 个字节编码为
\u00F0\u009F\u0098\u0086
encode("latin-1")
是将这些编码转换回原始字节的便捷方式。
decode("utf-8")
将原始字节转换为 Unicode 字符。
所以我下载了 Facebook Messenger 消息,它们是包含大量信息的几个 json 文件。这是 json:
的片段"messages": [
{
"sender_name": "sample name",
"timestamp_ms": 1649215459023,
"content": "sample message",
"reactions": [
{
"reaction": "\u00f0\u009f\u0098\u0086",
"actor": "actor name"
}
],
"type": "Generic",
"is_unsent": false
}
]
我想做的是阅读这个 json 然后用它创建一个数据框,但是由于所有非 ASCII 字符都已替换为 \u00f0\u009f\u0098\u0086
类型的代码,所以它不是例如将其识别为表情符号。
我的问题是,我需要做什么才能真正看到那些表情符号,而不是那些代码?我考虑过使用正则表达式来查找所有这些模式,但我不知道我可以用什么来替换它们。
是的,我在尝试解码 Facebook 消息转储时遇到了同样的问题。这是我解决它的方法:
string = "\u00f0\u009f\u0098\u0086".encode("latin-1").decode("utf-8")
# ''
原因如下:
- 此表情符号需要 4 个字节以 UTF-8 编码(
F0 9F 98 86
,请查看 this page 的底部) - Facebook 可以为 JSON 文件使用 UTF-8,但他们选择了 printable ASCII。所以它将这 4 个字节编码为
\u00F0\u009F\u0098\u0086
encode("latin-1")
是将这些编码转换回原始字节的便捷方式。decode("utf-8")
将原始字节转换为 Unicode 字符。