【问题标题】:Python ignores encoding argument in favor of cp1252Python 忽略编码参数,支持 cp1252
【发布时间】:2014-03-03 14:22:03
【问题描述】:

我有一个冗长的 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中加载文件?

【问题讨论】:

    标签: python encoding utf-8 cp1252


    【解决方案1】:

    试试这个:

    import codecs
    
    dat = json.load(codecs.open("data.json", "r", "utf-8"))
    

    这里还描述了一些关于编解码器库上下文中编写模式的提示:Write to UTF-8 file in Python

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 2014-10-27
      • 1970-01-01
      相关资源
      最近更新 更多