Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-无法解码html(urllib)_Python_Html_Python 3.x_Character Encoding_Urllib - Fatal编程技术网

Python-无法解码html(urllib)

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):

我正在尝试将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):
  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')