【发布时间】:2016-07-07 10:18:04
【问题描述】:
我的 json 文件中有一些非 ASCII 字符。有一个列表,该列表包含SMΛN 之类的字符串。当我读取 json 文件并打印该列表时
with open ("strings.json") as f:
t = json.load(f)
print (t)
我得到了像'SMΛN\n' 这样的非ASCII 字符串。如何将其解码为 utf-8 或类似我可以正确打印 unicode 字符的东西?我试过这个
with open ("strings.json",encoding = 'utf-8') as f:
t = json.load(f).encode('utf-8').decode('utf-8')
但是输出还是一样的。
【问题讨论】:
-
locale说明了什么?将 unicode 编码为文件中的字节是一个问题,而在读取环境中读取另一个解码,然后再次编码输出(这应该取决于带有打印的语言环境) -
也可能是您正在阅读的文件不是UTF-8。你确定这是正确的编码吗?
-
@syntonym 我从 .txt 文件中获取数据,然后从
json.dump()获取数据,然后如上所述从 json 中读取数据。该文件是 utf-8 编码的,我很确定 -
@David 是的,它是 Windows-7
-
FWIW,
'SMΛN'.encode('utf8').decode('cp1252')导致'SMΛN';和'SMΛN'.encode('cp1252').decode('utf8')导致'SMΛN'。此外,'SMΛN'.encode('utf8')导致b'SM\xce\x9bN'
标签: python json windows unicode python-3.4