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

在使用python 3的windows上使用json.dumps进行神秘的字符串编码,python,json,python-3.x,encoding,Python,Json,Python 3.x,Encoding,我们发现了json.dumps在Linux和Windows上的不同行为 jsonData = json.load(open('test.json')) print(jsonData) jsonStr = json.dumps(jsonData, ensure_ascii=False) print(jsonStr) Linux上的输出:(python3.3) Windows上的输出:(python3.4) 我们错过什么了吗test.json看起来像{'name':'Müller'} 如何在Wi

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

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

jsonStr = json.dumps(jsonData, ensure_ascii=False)
print(jsonStr)
Linux上的输出:(python3.3)

Windows上的输出:(python3.4)

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


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

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

从:

默认编码依赖于平台(无论
locale.getpreferredencoding()
返回什么)


强调我。

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

从:

默认编码依赖于平台(无论
locale.getpreferredencoding()
返回什么)


强调我。

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

从:

默认编码依赖于平台(无论
locale.getpreferredencoding()
返回什么)


强调我。

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

从:

默认编码依赖于平台(无论
locale.getpreferredencoding()
返回什么)



强调我的。

你在Windows上写文件时使用了什么编码?我当然不能在Mac上用Python 3.4重现你的问题;生成的输出看起来像UTF-8数据被解释为拉丁语-1。您是否100%确定JSON数据不是从文件中读取的?对不起,我做了很多实验,但输入了错误的代码。@Nicolas我已将问题编辑为我理解您要问的问题。请确认。你用什么编码在Windows上写这个文件?我当然不能在Python 3.4的Mac上重现你的问题;生成的输出看起来像UTF-8数据被解释为拉丁语-1。您是否100%确定JSON数据不是从文件中读取的?对不起,我做了很多实验,但输入了错误的代码。@Nicolas我已将问题编辑为我理解您要问的问题。请确认。你用什么编码在Windows上写这个文件?我当然不能在Python 3.4的Mac上重现你的问题;生成的输出看起来像UTF-8数据被解释为拉丁语-1。您是否100%确定JSON数据不是从文件中读取的?对不起,我做了很多实验,但输入了错误的代码。@Nicolas我已将问题编辑为我理解您要问的问题。请确认。你用什么编码在Windows上写这个文件?我当然不能在Python 3.4的Mac上重现你的问题;生成的输出看起来像UTF-8数据被解释为拉丁语-1。您是否100%确定JSON数据不是从文件中读取的?对不起,我做了很多实验,但输入了错误的代码。@Nicolas我已将问题编辑为我理解您要问的问题。请确认。非常感谢!那是缺失的部分。非常感谢!那是缺失的部分。非常感谢!那是缺失的部分。非常感谢!那是缺失的部分。
{'name': 'Müller'}
{"name": "Müller"}
{'name': 'Müller'}
{"name": "M\xc3\xbcller"}
jsonData = json.load(open('test.json', encoding='utf8'))