【问题标题】:Python - UnicodeEncodeError: 'charmap' codec can't encode characters in position 85-89: character maps to <undefined>Python - UnicodeEncodeError:“charmap”编解码器无法编码位置 85-89 中的字符:字符映射到 <undefined>
【发布时间】:2018-09-15 23:14:52
【问题描述】:

我正在尝试查看是否可以将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)

直到最后一步,我才收到任何错误提示:

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>`

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

【问题讨论】:

    标签: python python-3.x utf-8 web-scraping


    【解决方案1】:

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

    f=open("test.txt", "w+", encoding="utf-8")
    f.write(stringU)
    

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

    f=open("test.txt", "w+", errors="ignore")
    f.write(stringU)
    

    【讨论】:

    • 你哪里来的天才?!这个, encoding="utf-8" 在搜索了几个小时后提供了帮助。这个问题!
    • 在 encode("utf-8") 之后仍然有同样的问题
    猜你喜欢
    • 1970-01-01
    • 2018-07-30
    • 2021-01-27
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多