1

我有一项任务需要生成数据字典的可移植版本,并插入一些额外的字段。我最终构建了一个有点大的 Python 字典,然后我想将其转换为 JSON。但是,当我尝试这种转换时......

with open('CPS14_data_dict.json','w') as f:
    json.dump(data_dict,f,indent=4,encoding='utf-8')

我遇到了一个例外:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 17: invalid start byte

我知道这是一个常见错误,但我终其一生都无法找到一个实例来说明如何在字典中找到有问题的部分。我见过的唯一合理的事情是将字典转换为字符串并ord()在每个字符上运行:

for i,c in enumerate(str(data_dict)):
    if ord(c)>128:
        print i,'|',c

问题是,此操作根本不返回任何内容。我是否遗漏了一些关于如何ord()工作的东西?或者,报告了一个位置(17),但我不清楚这是指什么。第 17 个字符、行或条目似乎没有任何问题。

我应该说我知道这个ensure_ascii=False选项。事实上,它会写入磁盘(而且很漂亮)。然而,这种方法似乎只是把罐子踢了下去。当我尝试重新读入文件时,我得到了相同的编码错误。因为我想将此文件用于多种目的(转换回字典),所以这是一个问题。

请注意,这是我使用 Windows 7 的工作计算机,因此我没有我的 shell 工具来探索该文件(而且我的虚拟机处于故障状态)。

任何帮助将不胜感激。

4

0 回答 0