使用python 3在windows上使用json.dumps进行神秘的字符串编码

时间:2014-06-13 13:34:51

标签: python json python-3.x encoding

我们在Linux和Windows上发现json.dumps的不同行为

jsonData = json.load(open('test.json'))
print(jsonData)

jsonStr = json.dumps(jsonData, ensure_ascii=False)
print(jsonStr)

Linux上的输出:(python3.3)

{'name': 'Müller'}
{"name": "Müller"}

Windows上的输出:(python3.4)

{'name': 'Müller'}
{"name": "M\xc3\xbcller"}

我们错过了什么吗? test.json看起来像{'name': 'Müller'}

如何在Windows上使用Python 3读取UTF-8文件?

1 个答案:

答案 0 :(得分:3)

打开文件时不要依赖默认编码;您的JSON文件被编码为UTF-8,但您使用单字节编解码器打开它(可能是CP1252,Windows Latin-1代码页):

jsonData = json.load(open('test.json', encoding='utf8'))

来自open() function documentation

  

默认编码为平台相关(无论locale.getpreferredencoding()返回)

强调我的。