更新:
我在这里找到了答案: Python UnicodeDecodeError - 我是否误解了编码?
当我读取文件时,我需要将我的输入文件明确地解码为Unicode。因为它包含的字符既不是可接受的ascii字符,也不是Unicode字符。所以当遇到这些字符时,编码过程会失败。
原始问题
所以,我知道这里有些东西我没有理解。
我有一个unicode字符串数组,其中一些包含非Ascii字符。
我想将其编码为json格式。
json.dumps(myList)
它抛出了一个错误。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb4 in position 13: ordinal not in range(128)
我该怎么做?我尝试将ensure_ascii参数设置为True和False,但都无法解决这个问题。我知道我正在向json.dumps传递unicode字符串。我了解json字符串应该是unicode的。为什么它不能自动解决这个问题呢?
我做错了什么?
更新:Don Question明智地建议我提供堆栈跟踪。这是它:
Traceback (most recent call last):
File "importFiles.py", line 69, in <module>
x = u"%s" % conv
File "importFiles.py", line 62, in __str__
return self.page.__str__()
File "importFiles.py", line 37, in __str__
return json.dumps(self.page(),ensure_ascii=False)
File "/usr/lib/python2.7/json/__init__.py", line 238, in dumps
**kw).encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 204, in encode
return ''.join(chunks)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb4 in position 17: ordinal not in range(128)
请注意,这是Python 2.7版本,并且即使使用ensure_ascii=False选项,错误仍然会发生。
更新2:Andrew Walker在评论中提供的有用链接让我想到,在尝试进行json编码之前,可以将数据强制转换为便捷的字节格式,例如:
data.encode("ascii","ignore")
很遗憾,这仍然出现了相同的错误。