我有一个套接字服务器,应该从客户端接收 UTF-8 有效字符。
问题是一些客户端(主要是黑客)通过它发送了所有错误类型的数据。
我可以轻松区分真正的客户端,但我将发送的所有数据记录到文件中,以便稍后进行分析。
有时我会遇到这样的角色œ
导致UnicodeDecodeError
error.
我需要能够将带有或不带有这些字符的字符串设置为 UTF-8。
Update:
对于我的特殊情况,套接字服务是 MTA,因此我只希望接收 ASCII 命令,例如:
EHLO example.com
MAIL FROM: <[email protected] /cdn-cgi/l/email-protection>
...
我将所有这些都记录在 JSON 中。
然后一些不怀好意的人决定发送各种垃圾。
这就是为什么对于我的具体情况,完全可以删除非 ASCII 字符。
http://docs.python.org/howto/unicode.html#the-unicode-type http://docs.python.org/howto/unicode.html#the-unicode-type
str = unicode(str, errors='replace')
or
str = unicode(str, errors='ignore')
Note: 这将删除(忽略)有问题的字符,返回没有它们的字符串。
对我来说这是理想的情况,因为我使用它来防止我的应用程序不允许的非 ASCII 输入。
或者:使用 open 方法codecs https://docs.python.org/2/library/codecs.html#codecs.open模块读取文件:
import codecs
with codecs.open(file_name, 'r', encoding='utf-8',
errors='ignore') as fdata:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)