【发布时间】:2013-01-15 19:09:18
【问题描述】:
我正在尝试从 musicbrainz 的 API 服务返回 JSON,一些歌曲的返回数据包含 unicode 字符,我无法将它们转换为常规符号等。请让我知道我应该在这里做什么。
JSON:
{
"status": "ok",
"results": [{
"recordings": [{
"duration": 402,
"tracks": [{
"duration": 402,
"position": 6,
"medium": {
"release": {
"id": "dde6ecee-8e9b-4b46-8c28-0f8d659f83ac",
"title": "Tecno Fes, Volume 2"
},
"position": 1,
"track_count": 11
},
"artists": [{
"id": "57c1e5ea-e08f-413a-bcb1-f4e4b675bead",
"name": "Gigi D\u2019Agostino"
}],
"title": "You Spin Me Round"
}],
"id": "2e0a7bce-9e44-4a63-a789-e8c4d2a12af9"
}, ....
失败的代码(示例):
string = '\u0420\u043e\u0441\u0441\u0438\u044f'
print string.encode('utf-8')
我在 Windows 7 机器上使用它并拥有 python 2.7 并在命令行终端上运行此代码。我得到以下输出:
C:\Python27>python junk.py Gigi DGÇÖAgostino Gigi D?Agostino Gigi D\u2019Agostino
我希望输出是Gigi D' Agostino
【问题讨论】:
-
什么是“正常”字符?
-
我不确定您的问题到底是什么。我通过标准 JSON 解码器运行了您提供的 JSON,并且一位非 ASCII 正确地输出为“Gigi D'Agostino”。 “失败的代码”,你只是缺少一个字符。如果你写
string = u'\u0420\u043e\u0441\u0441\u0438\u044f',变量被正确设置为Россия。顺便说一句,不要使用“字符串”作为变量名;它只能以泪水告终。 -
你的意思是你需要 ASCII 编码的字符串吗?为什么?您实际上对这些数据做了什么?
-
我在 Windows 7 机器上使用它并拥有 python 2.7 并在命令行终端上运行此代码。我得到以下输出:C:\Python27>python junk.py Gigi DGÇÖAgostino Gigi D?Agostino Gigi D\u2019Agostino
-
我希望输出是--Gigi D' Agostino--
标签: python windows json cmd musicbrainz