Python 3.x 带请求的中断utf-8编码
我使用请求从resp API获取数据。 问题是,当我尝试将响应转换为UTF-8时,会导致一些断字符,例如 如果我使用Python 3.x 带请求的中断utf-8编码,python-3.x,python-requests,unicode-string,Python 3.x,Python Requests,Unicode String,我使用请求从resp API获取数据。 问题是,当我尝试将响应转换为UTF-8时,会导致一些断字符,例如 如果我使用response.text response.content = {"description":"Golden Cã£o Mb Adulto 3kg F"} response.content = {"description":"Golden C\xc3\xa3\xc2\xa3o Mb Adulto 3kg F"} 如果我使用response.content response.
response.text
response.content = {"description":"Golden Cã£o Mb Adulto 3kg F"}
response.content = {"description":"Golden C\xc3\xa3\xc2\xa3o Mb Adulto 3kg F"}
如果我使用response.content
response.content = {"description":"Golden Cã£o Mb Adulto 3kg F"}
response.content = {"description":"Golden C\xc3\xa3\xc2\xa3o Mb Adulto 3kg F"}
我尝试使用response.encoding='utf-8'
,response.encoding='latin-1'
,以及response.text
之前的许多其他方法来更改请求编码。
我尝试了response.decode('utf-8')
,其他人也尝试了解码。在这种情况下,我有{“description”:“Golden Cão Mb Adulto 3kg F”}
如果我使用
response.text.encode('latin-1')。decode('utf-8')
我可以修复其中一些损坏的字符,但对于上面的示例,我得到了这个错误
{UnicodeDecodeError}'utf-8'编解码器无法解码字节…:无效的连续字节
我尝试了很多其他的方法,但我无法解决这个问题。我需要一些帮助
编辑: 服务器的响应头
{
'Content-Type': 'application/json',
'Vary': 'Accept-Encoding',
'Content-Encoding': 'gzip',
'Content-Length': '1603',
'Connection': 'close'
}
对于上述示例,结果应为
{"description":"Golden Cão Mb Adulto 3kg F"}
编辑:已解决
结果表明错误发生在服务器端。服务器在保存某些字符时损坏了它们 是的,那是因为错误地解码了传入的字节
\xc3\xa3\xc2\xa3
是一个非常奇怪的字节序列<代码>C3 A3是UTF-8,似乎是正确的。但是c2a3
真的没有什么用处。奇怪。(好吧,它是,所以请求的值。文本给你的是正确的,但是你说浏览器中没有磅符号的事实很奇怪。)你使用的URL是公开的吗,这样我就可以从我的角度测试它了?我想我已经修复了,在你的评论之后,我意识到第一个序列是我想要的字符,第二个是“垃圾”。第二个序列有时不被识别为UTF-8。因此,我忽略了它们。response.text.encode('latin-1')。decode('utf8','ignore')
似乎可以工作。错误在服务器端,我的意思是,有多个条目“Golden Cão Mb Adulto 3kg F”“其中一个有着破碎的性格。当我说浏览器正在工作时,我看到的是错误的条目。好吧,我怀疑它可能是坏数据。那么,在客户端你可以做的事情就不多了。请求
模块做了正确的事情。我补充了这个问题。Tks