json.load() 函数给出奇怪的 'UnicodeDecodeError: 'ascii' codec can't decode' 错误

Posted

技术标签:

【中文标题】json.load() 函数给出奇怪的 \'UnicodeDecodeError: \'ascii\' codec can\'t decode\' 错误【英文标题】:json.load() function give strange 'UnicodeDecodeError: 'ascii' codec can't decode' errorjson.load() 函数给出奇怪的 'UnicodeDecodeError: 'ascii' codec can't decode' 错误 【发布时间】:2016-05-05 06:15:30 【问题描述】:

我正在尝试使用 python .loads() 函数读取我保存在文本文件中的 JSON 文件。稍后我将解析 JSON 以获得特定值。

我不断收到此错误消息。 google了一下,没有结果。

UnicodeDecodeError:“ascii”编解码器无法解码位置 >85298 中的字节 0xc2:序数不在范围内 (128)

这是完整的错误信息:

Traceback(最近一次调用最后一次):文件“.../FirstDegreeKanyeScript.py”,>第 10 行,在 data=json.load(data_file) 文件中 >"/Library/Frameworks/Python.framework/Versions/3.5 /lib/python3.5/json/in>it.py",第 265 行,在加载返回加载(fp.read(),文件 >"/Library/Frameworks/Python.framework/Versions /3.5/lib/python3.5/encodings>/ascii.py", line 26, in decode return codecs.ascii_decode(input, >self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 >在位置 85298:序数不在范围内(128)

这是我的代码:

import json
from pprint import pprint

with
open("/Users/.../KanyeAllSongs.txt") as data_file:
    data=json.load(data_file)

pprint(data)

我尝试在json.load 下添加data.decode('utf-8'),但仍然遇到同样的错误。

任何想法可能是什么问题?

【问题讨论】:

你用的是哪个版本的python?文件采用哪种编码方式? 【参考方案1】:

open 调用中指定编码。

# encoding is a keyword argument
open("/Users/.../KanyeAllSongs.txt", encoding='utf-8') as data_file:
    data=json.load(data_file)

【讨论】:

@Alik i get open('filename.js', encoding='utf-8') as data_file: ^ SyntaxError: invalid syntax @FightFireWithFire - 应尽快更新(等待同行评审:***.com/review/suggested-edits/16132026) 应该有with open(...) as ...

以上是关于json.load() 函数给出奇怪的 'UnicodeDecodeError: 'ascii' codec can't decode' 错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的合并函数给出奇怪的答案?

VBScript VarType 函数给出了奇怪的值

python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分

Python中json文件处理的四个函数json.dumps()json.loads()json.dump()和json.load()的区分

python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分

python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分