Python解码/编码问题

时间:2012-04-03 02:56:37

标签: python http character-encoding

我知道互联网上的很多人都表示在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

1 个答案:

答案 0 :(得分:1)

您可以尝试使用UnicodeDammit查找数据的编码。确保你收到utf-8。您也可以选择忽略错误:

buffer.decode("utf-8", "ignore")