BLUF:为什么decode()
对象上的bytes
方法无法解码ç
?
我收到了UnicodeDecodeError: 'utf-8' codec can't decode by 0xe7 in position....
。在追踪角色时,它是ç
角色。所以,当我从服务器读取响应时:
conn = http.client.HTTPConnection(host = 'something.com')
conn.request('GET', url = '/some/json')
resp = conn.getresponse()
content = resp.read().decode() # throws error
我无法获取内容。如果我只是content = resp.read()
它成功了,我可以使用wb
写入文件,但是当ç
为时,它会在写入时被文件中的0xE7
替换。即使我在Notepad ++中打开文件并将编码设置为UTF-8,该字符也只显示为十六进制版本。
为什么我无法从HTTPResponse解码此UTF-8字符?我没有正确地将它写入文件吗?
答案 0 :(得分:2)
如果您遇到编码/解码问题,请查看UTF-8 Encoding Debugging Chart。
如果您在图表中查找Windows 1252
代码点0xE7
,则会发现预期字符为ç
,表明编码为CP1252
。