在Python中从套接字读取时解码内容

use*_*744 3 python sockets unicode utf-8

假设我在Python中读取了socket中的一些内容,并且必须在运行时将其解码为UTF-8.

我无法将所有内容保存在内存中,因此我必须在收到时将其解码并保存到文件中.

可能会发生这种情况,即我只会收到部分字符的字符,(例如,在Python中,€-sign由三个字节表示为'\ xe2\x82\xac').

假设我只收到前两个字节(\ xe2\x82),如果我尝试解码它,我会得到'UnicodeDecodeError',正如预期的那样.

我总是可以尝试解码当前内容并检查它是否抛出异常

  • 但这种方法有多可靠?
  • 我如何知道或确定我是否可以解码当前内容?
  • 怎么做对吗?

谢谢

Ign*_*ams 6

Guido的时间机器再次袭来.

>>> dec = codecs.getincrementaldecoder('utf-8')()
>>> dec.decode('foo\xe2\x82')
u'foo'
>>> dec.decode('\xac')
u'\u20ac'
Run Code Online (Sandbox Code Playgroud)