当前位置: 首页 > 知识库问答 >
问题:

UnicodeDecodeError:“utf8”编解码器无法解码位置0中的字节0xa5:无效的开始字节

夔庆
2023-03-14

我正在使用Python-2.6 CGI脚本,但在执行json.dumps()时在服务器日志中发现此错误,

Traceback (most recent call last):
  File "/etc/mongodb/server/cgi-bin/getstats.py", line 135, in <module>
    print json.dumps(​​__get​data())
  File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 0: invalid start byte

​在这里

__getdata()函数返回字典{}

在发布此问题之前,我已将此问题提交给了SO。

下面这行代码伤害了JSON编码器,

now = datetime.datetime.now()
now = datetime.datetime.strftime(now, '%Y-%m-%dT%H:%M:%S.%fZ')
print json.dumps({'current_time': now}) # this is the culprit

我找到了一个临时的解决办法

print json.dumps( {'old_time': now.encode('ISO-8859-1').strip() })

但是我不确定这样做是否正确。

共有3个答案

太叔昆
2023-03-14

错误是因为字典中有一些非ascii字符,它不能被编码/解码。避免此错误的一个简单方法是使用encode()函数对这些字符串进行编码,如下所示(如果a是非ascii字符的字符串):

a.encode('utf-8').strip()
佟和平
2023-03-14

尝试以下代码片段:

with open(path, 'rb') as f:
  text = f.read()
赵英资
2023-03-14

我只需在read\u csv()命令中定义一个不同的编解码器包,就可以实现这一点:

encoding='unicode\u escape'

例如:

import pandas as pd
data = pd.read_csv(filename, encoding= 'unicode_escape')
 类似资料:
  • 问题内容: 我正在使用脚本,但在执行此操作时在服务器日志中发现了此错误, ``这里 函数返回。 张贴这个问题之前我已经提到这个 问题,操作系统,所以的。 更新 下一行损害了JSON编码器, 我有一个临时解决方案 但是我不确定这样做是否正确。 问题答案: 该错误是因为字典中存在一些非ASCII字符,并且无法对其进行编码/解码。避免此错误的一种简单方法是使用以下函数对此类字符串进行编码(如果字符串为非

  • 问题内容: 我正在使用Python-2.6 CGI脚本,但是在执行服务器日志时发现此错误, 这里 函数返回。 张贴这个问题之前我已经提到这个问题,操作系统,所以的。 更新 下一行损害了JSON编码器, 我有一个临时解决方案 但是我不确定这样做是否正确。 问题答案: 该错误是因为字典中存在一些非ASCII字符,并且无法对其进行编码/解码。避免此错误的一种简单方法是使用encode()如下函数对此类字

  • 问题内容: 我正在尝试使用python 2.7.12从json文件读取twitter数据。 我使用的代码是这样的: 结果我得到: 我仔细研究了类似问题的所有答案,并想出了这段代码,它在上一次有效。我不知道为什么现在不起作用…我将不胜感激! 问题答案: 这对您没有帮助,这会使事情进一步混乱- 这是一个讨厌的黑客,您需要将其从代码中删除。 错误正在发生,因为是一个字符串,您正在调用。仅当字符串是Uni

  • 问题内容: 我正在尝试编写一个脚本,该脚本通过创建随机utf-8编码的字符串,然后将其解码为unicode来生成随机unicode。对于单个字节,它工作正常,但是对于两个字节,它将失败。 例如,如果我在python shell中运行以下命令: 根据utf-8方案https://en.wikipedia.org/wiki/UTF-8#Description,字节序列应以开头和开头都有效。 这是我的p

  • 问题内容: unicode是如何在python2上工作的?我只是不明白。 在这里,我从服务器下载数据并解析为JSON。 谢谢!! 编辑:以下字符串导致错误:。应该解码为(abhören) 问题答案: 您尝试解析为JSON的字符串未使用UTF-8编码。它很可能是在ISO-8859-1中编码的。请尝试以下操作: 它将处理JSON消息中可能出现的所有变音符号。 您应该阅读Joel Spolsky的《每个

  • 我试图从csv文件中读取所有列。 错误:UnicodeDecodeError:“utf-8”编解码器无法解码位置15中的字节0x96:无效的开始字节