Python - UnicodeEncodeError:'charmap' 编解码器无法对位置 85-89 的字符进行编码:字符映射到 <undefined>

Cha*_*hae 5 python utf-8 web-scraping python-3.x

我想看看我是否可以将 的输出传输urllib.request.urlopen()到一个文本文件来查看它。我尝试将输出解码为字符串,以便可以写入文件,但显然原始输出包含一些未正确转换为字符串的韩语字符。

到目前为止,我有:

from urllib.request import urlopen

openU = urlopen(myUrl)
pageH = openU.read()
openU.close()
stringU = pageH.decode("utf-8")

f=open("test.txt", "w+")
f.write(stringU)
Run Code Online (Sandbox Code Playgroud)

直到最后一步我才收到任何错误,此时它说:

Traceback (most recent call last):  
  File "<stdin>", line 1, in <module>  
  File "C:\Users\Chae\AppData\Local\Programs\Python\Python36\lib\encodings\cp1252.py", line 19, in encode  
  return codecs.charmap_encode(input,self.errors,encoding_table)[0] 
UnicodeEncodeError: 'charmap' codec can't encode characters in position 85-89: character maps to `<undefined>`
Run Code Online (Sandbox Code Playgroud)

有没有办法让字符串也包含韩语,或者如果没有,我如何跳过导致问题的字符并将字符串的其余部分写入文件?

Rob*_*obᵩ 16

文件编码是什么对您来说重要吗?如果没有,则使用 utf-8 编码:

f=open("test.txt", "w+", encoding="utf-8")
f.write(stringU)
Run Code Online (Sandbox Code Playgroud)

如果您希望文件采用 cp1252 编码(这显然是您系统的默认设置)并忽略不可编码的值,请添加errors="ignore"

f=open("test.txt", "w+", errors="ignore")
f.write(stringU)
Run Code Online (Sandbox Code Playgroud)

  • 编码后仍然有同样的问题(“utf-8”) (2认同)