我知道互联网上的很多人都表示在Python中使用字符串编码存在问题,但无论我尝试什么,我都无法弄清楚如何解决我的问题。基本上,我使用TCP套接字连接到Web服务器,然后我向该服务器发送HTTP请求。我将响应读入一系列缓冲区,我解码并连接以创建一个完整的字符串响应。然而,当我得到响应时,我得到 UnicodeDecodingErrors 。我想使用我的程序进入许多不同的网站,那么这个问题的任何解决方案都适用于我提供的任何网站吗?
感谢您的时间。
一些代码:
def getAllFromSocket(socket):
'''Reads all data from a socket and returns a string of it.'''
more_bytes = True
message = ''
if(socket!=None):
while(more_bytes):
buffer = socket.recv(1024)
if len(buffer) == 0:
more_bytes = False
else:
message += buffer.decode('utf-8')
return message
所以当我这样做时:
received_message = getAllFromSocket(my_sock)
我明白了:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xd0 in position 1023: unexpected end of data
答案 0 :(得分:1)
您可以尝试使用UnicodeDammit查找数据的编码。确保你收到utf-8
。您也可以选择忽略错误:
buffer.decode("utf-8", "ignore")