Python-无法解码html(urllib)
我正在尝试将html从网页写入文件,但在解码字符时遇到问题:Python-无法解码html(urllib),python,html,python-3.x,character-encoding,urllib,Python,Html,Python 3.x,Character Encoding,Urllib,我正在尝试将html从网页写入文件,但在解码字符时遇到问题: import urllib.request response = urllib.request.urlopen("https://www.google.com") charset = response.info().get_content_charset() print(response.read().decode(charset)) 最后一行导致错误: Traceback (most recent call last):
import urllib.request
response = urllib.request.urlopen("https://www.google.com")
charset = response.info().get_content_charset()
print(response.read().decode(charset))
最后一行导致错误:
Traceback (most recent call last):
File "script.py", line 7, in <module>
print(response.read().decode(charset))
UnicodeEncodeError: 'ascii' codec can't encode character '\u015b' in
position 6079: ordinal not in range(128)
发生了什么事?您可以使用忽略无效字符
response.read().decode("utf-8", 'ignore')
除了忽略
之外,还有其他选项,例如替换
(还有字符串的
str.encode(encoding='UTF-8',errors='strict')
。只需print(response.read())
就可以了。@如果我使用file.write()函数,它需要字符串。为什么不以二进制模式打开文件呢?在print(resp.info().get\u content\u charset()时这样做可以吗?)
返回无
?我不确定OP是否也看到了这个,因为他们将它存储在一个变量中。我承认它不是完全干净的。这意味着系统无法检测encodig,可能是因为它没有在头中明确说明。有关获取字符集的其他方法,请参见和。“一般来说,服务器可能对编码撒谎,或者根本不报告”。
response.read().decode("utf-8", 'ignore')