我不明白为什么当我使用Requests library发出一个HTTP请求时,我要求显示命令.text
,特殊字符(例如重音符号)被编码(例如é
=é
)。在
但是当我尝试r.encoding
时,我得到{
另外,这个问题只出现在一些网站上。有时我有正确的字符,但有时,一点也不正确。在
尝试如下:
r = requests.get("https://gks.gs/login")
print r.text
显示了编码字符,我们可以看到Mot de passe oublié ?
。在
我不明白为什么。你认为这可能是因为https吗?请问怎么修这个?在
这些是HTML character entity references,最简单的解码方法是:
在Python 2.x中:
在Python 3.x中:
^{pr2}$它们是在HTML编码字符集中定义的HTML escape codes。即使某个文档可以用UTF-8编码,HTML(及其祖辈SGML)还是在ASCII的旧时代定义的。一个访问WWW上HTML页面的系统可能本身就支持扩展字符,也可能不支持,开发人员需要一种方法为某些用户定义“高级”字符,而对于其他系统不支持这些字符的用户,则会出现错误。由于UTF-8标准化在当时的创始人眼中只是一线曙光,因此开发了一种编码系统来描述不属于ASCII的字符。由浏览器开发人员来实现一种显示这些扩展字符的方法,可以是通过glyph,也可以是通过扩展字体。在
使用
&sometihg;
对特殊字符进行编码在任何HTML中都是“合法的”,尽管看起来有点奇怪,但它们被认为是有效的。在文本应该由某个HTML浏览器呈现,它将产生正确的结果,不管你发现这些字符是使用给定的构造还是直接编码的。在
有关如何转换这些编码字符的说明,请参见HTML Entity Codes to Text
相关问题 更多 >
编程相关推荐