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

UnicodeDecodeError:“utf8”编解码器无法解码字节0x9c

祁修平
2023-03-14

我有一个套接字服务器,它应该从客户端接收UTF-8有效字符。

问题是一些客户端(主要是黑客)正在通过它发送所有错误类型的数据。

我可以很容易地分辨出真正的客户机,但我会将发送的所有数据记录到文件中,以便以后进行分析。

有时我会遇到这样的字符,导致UnicodeDecodeError错误。

我需要能够使字符串UTF-8有或没有这些字符。

更新:

对于我的特殊情况,套接字服务是MTA,因此我只希望接收ASCII命令,例如:

EHLO example.com
MAIL FROM: <john.doe@example.com>
...

我在JSON中记录了所有这些。

然后,一些没有善意的人决定发送各种各样的垃圾。

这就是为什么在我的特定情况下,完全可以去掉非ASCII字符。

共有3个答案

谯嘉胜
2023-03-14

现在我已经转到Python3,这类问题突然出现。我不知道Python2只是简单地解决了文件编码的任何问题。

我发现这是一个很好的解释,说明了这些差异,以及如何在以上这些都不适用于我的情况下找到解决方案。

http://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html

简而言之,要使Python 3的行为尽可能类似于Python 2,请使用:

with open(filename, encoding="latin-1") as datafile:
    # work on datafile here

然而,阅读这篇文章,没有一个一刀切的解决方案。

谭骏
2023-03-14

将引擎从C更改为Python为我做到了这一点。

发动机为C:

pd.read_csv(gdp_path, sep='\t', engine='c')

UTF-8编解码器无法解码位置18的字节0x92:无效的开始字节

引擎是Python:

pd.read_csv(gdp_path, sep='\t', engine='python')

我没有错误。

仇建茗
2023-03-14

http://docs.python.org/howto/unicode.html#the-unicode-type

str = unicode(str, errors='replace')

或者

str = unicode(str, errors='ignore')

注意:这将删除(忽略)返回字符串时没有返回的字符。

对我来说,这是一个理想的情况,因为我使用它来保护我的应用程序不允许的非ASCII输入。

或者:使用编解码器模块中的open方法读取文件:

import codecs
with codecs.open(file_name, 'r', encoding='utf-8',
                 errors='ignore') as fdata:
 类似资料:
  • 问题内容: 我有一个套接字服务器,应该从客户端接收UTF-8有效字符。 问题是某些客户端(主要是黑客)正在通过它发送所有错误的数据。 我可以轻松地区分真正的客户端,但是我会将所有发送的数据记录到文件中,以便以后进行分析。 有时我会得到这样的导致错误的字符。 我需要能够使带有或不带有这些字符的字符串UTF-8。 更新: 对于我的特殊情况,套接字服务是MTA,因此我只希望接收ASCII命令,例如: 我

  • 问题内容: 我有一个套接字服务器,应该从客户端接收UTF-8有效字符。 问题是某些客户端(主要是黑客)正在通过它发送所有错误的数据。 我可以轻松地区分真正的客户端,但是我会将所有发送的数据记录到文件中,以便以后进行分析。 有时我会收到这样的字符œ,从而导致错误。 我需要使字符串UTF-8带有或不带有这些字符。 更新: 对于我的特殊情况,套接字服务是MTA,因此我只希望接收ASCII命令,例如: 我

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

  • 我试图在Python pandas中做一些数据工作,但在写出结果时遇到了麻烦。我以CSV文件的形式读取数据,并将每个脚本导出为它自己的CSV文件,这很好地工作。虽然最近我试着用工作表导出一个Excel文件中的所有内容,但有几个工作表给了我一个错误 “'UTF8'编解码器无法解码位置1中的字节0xE9:无效的连续字节” 我甚至不知道如何开始查找任何可能导致导出到Excel的问题的字符。不知道为什么它

  • 问题内容: 我想制作搜索引擎,并按照某些网络中的教程进行操作。我想测试解析html 它得到错误 我在网上看到了一些使用encode()的解决方案。但是我不知道如何在代码中插入encode()函数。谁能帮我? 问题答案: 在Python 3中,文件会以文本(解码为Unicode)的形式为您打开。您无需告诉BeautifulSoup要解码的编解码器。 如果数据解码失败,那是因为您没有告诉调用文件读取文

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