Python忽略编码参数而支持cp1252

Python忽略编码参数而支持cp1252,python,encoding,utf-8,cp1252,Python,Encoding,Utf 8,Cp1252,我有一个很长的json文件,其中包含utf-8字符,并用utf-8编码。我想使用内置的json模块在python中阅读它 我的代码如下所示: dat = json.load(open("data.json"), "utf-8") 虽然我理解utf-8参数应该是不必要的,因为它被假定为默认值。但是,我得到了这个错误: Traceback (most recent call last): File "winratio.py", line 9, in <module> dat

我有一个很长的json文件,其中包含utf-8字符,并用utf-8编码。我想使用内置的json模块在python中阅读它

我的代码如下所示:

dat = json.load(open("data.json"), "utf-8")
虽然我理解utf-8参数应该是不必要的,因为它被假定为默认值。但是,我得到了这个错误:

Traceback (most recent call last):
  File "winratio.py", line 9, in <module>
    dat = json.load(open("data.json"), "utf-8")
  File "C:\Python33\lib\json\__init__.py", line 271, in load
    return loads(fp.read(),
  File "C:\Python33\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 28519: ch
aracter maps to <undefined>
我的问题是:为什么python似乎忽略了我的编码规范,并试图在cp1252中加载该文件?

试试这个:

import codecs

dat = json.load(codecs.open("data.json", "r", "utf-8"))
这里还介绍了有关编解码器库上下文中的写入模式的一些提示: