首页 > 解决方案 > 信使 JSON 中的编码

问题描述

我正在通过在 python 中创建一个简单的程序来学习使用 JSON,该程序分析我下载的 JSON 中的 facebook 消息,但是这些消息包含大量像这样写入 JSON 文件中的 Unicode 字符

pom\u00c3\u00b4\u00c5\u00bee

上面的例子应该是单词

波莫热

但是,当我尝试使用字符串并打印出单词时,它会像这样出现

'pomôže'

甚至大多数在线转换器都这样打印出来,除了这个https://github.com/mathiasbynens/utf8.js 有没有办法解决这个问题?

编辑:好的,所以我很抱歉不够清楚。希望这会让事情更清楚:我有一个 JSON 文件,当在 Notepad++ 中打开时,它看起来像这样:

{
    "participants": [
        {
            "name": "Person1"
        },
        {
            "name": "Person2"
        }
    ],
    "messages": [
        {
          "sender_name": "Person1",
          "timestamp_ms": 1521492166805,
          "content": "D\u00c3\u00bafam, \u00c5\u00bee pom\u00c3\u00b4\u00c5\u00bee",
          "type": "Generic"
        }
    ]
}

当我尝试打印或处理邮件内容时:

import json
with open("messages.json", "r") as f:
    messages = json.load(f)
    print(messages["messages"][0]["content"])

字符串如下所示:

Dúfam, že pomôže

如何将文本转换为可读形式?

标签: pythonjsonencodingutf

解决方案


我花了一段时间才明白,但原因很简单,字符表的读取方式很多,在你的情况下,问题是你想用 utf8 打印但表 utf-8 与系统语言有关,你必须用 utf-16 打印

我会给你一些例子:

在 JavaScript 中:

console.log("pom\u{00f4}\u{017E}e");

在蟒蛇 3

print("pom"+u"\u00F4"+u"\u017E"+"e")

在蟒蛇 2

print("pom"+u"\u00F4".encode('utf-8')+u"\u017E".encode('utf-8')+"e")

文档 python 2.X

文档 python 3.X


推荐阅读