python - 信使 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
如何将文本转换为可读形式?
解决方案
我花了一段时间才明白,但原因很简单,字符表的读取方式很多,在你的情况下,问题是你想用 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")
推荐阅读
- sql-server - 如何从 SQL Server 数据库填写现有的 Acrobat 可填写表单
- nuget - 如何使用 Visual Studio for Mac 将图标 url 添加到我的 Nuget 包
- java - 微服务资源管理
- php - 贝宝 PAYOUT_NOT_AVAILABLE
- node.js - nodemailer不发送邮件,给出250 ok
- c++ - C++ char a[20] = {0} 和 char *a= new char[20]() 有什么区别
- c# - 如何检查我的工作是为 FluentScheduler .NET 启动还是停止
- azure - Azure 数据工厂发布管道 - 找不到资源错误
- python - Python异步调用分离函数
- python - 无法在 Python 3.7.1 上安装 SSL?