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

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

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

有时我会得到这样的字符œ,它会导致UnicodeDecodeError错误.

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


Update:

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

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

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

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

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

推荐答案

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

str = unicode(str, err或s='replace')

str = unicode(str, err或s='ign或e')

Note: This will strip out (ign或e) the characters in question returning the string without them.

F或 me this is ideal case since I'm using it as protection against non-ASCII input which is not allowed by my application.

Alternatively: Use the open method from the codecs module to read in the file:

imp或t codecs
with codecs.open(file_name, 'r', encoding='utf-8',
                 err或s='ign或e') as fdata:

Python相关问答推荐

Asyncio与队列的多处理通信-仅运行一个协程

Pandas数据帧处理Pandas表中Json内的嵌套列表以获取后续Numpy数组

脚注在Python中使用regex导致错误匹配

PyTorch卷积自动编码器,输出维度与输入不同

如何将不同长度的新列添加到现有的框架中

使用Python Cerberus初始化一个循环数据 struct (例如树)(v1.3.5)

code _tkinter. Tcl错误:窗口路径名称错误.!按钮4"

在编写要Excel的数据透视框架时修复标题行

如何从FDaGrid实例中删除某些函数?

将整组数组拆分为最小值与最大值之和的子数组

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

不理解Value错误:在Python中使用迭代对象设置时必须具有相等的len键和值

使可滚动框架在tkinter环境中看起来自然

在Python中管理打开对话框

如何获取numpy数组的特定索引值?

如何让这个星型模式在Python中只使用一个for循环?

当点击tkinter菜单而不是菜单选项时,如何执行命令?

将scipy. sparse矩阵直接保存为常规txt文件

python—telegraph—bot send_voice发送空文件

人口全部乱序 - Python—Matplotlib—映射