当前位置: 首页 > 知识库问答 >
问题:

UnicodeEncodeError:“charmap”编解码器无法对字符进行编码

耿敏达
2023-03-14

我正试图抓取一个网站,但它给了我一个错误。

我正在使用以下代码:

import urllib.request
from bs4 import BeautifulSoup

get = urllib.request.urlopen("https://www.website.com/")
html = get.read()

soup = BeautifulSoup(html)

print(soup)

我得到了以下错误:

File "C:\Python34\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 70924-70950: character maps to <undefined>

我能做些什么来解决这个问题?

共有3个答案

蒋昊天
2023-03-14

在Python3.7和运行Windows10中,这一点起了作用(我不确定它是否能在其他平台和/或其他版本的Python上工作)

替换此行:

打开('filename','w')作为f:

用这个:

与打开('filename','w',编码='utf-8')作为f:

它工作的原因是,在使用文件时,编码更改为UTF-8,因此UTF-8中的字符可以转换为文本,而不是在遇到当前编码不支持的UTF-8字符时返回错误。

汤承允
2023-03-14

我通过添加. encode("utf-8")来修复它。

这意味着print(soup)变成了print(soup.encode(“utf-8”)

从劲
2023-03-14

当我将抓取的web内容保存到一个文件中时,我得到了相同的unicodeincoder错误。为了修复它,我替换了以下代码:

with open(fname, "w") as f:
    f.write(html)

用这个:

with open(fname, "w", encoding="utf-8") as f:
    f.write(html)

如果需要支持Python 2,请使用以下命令:

import io
with io.open(fname, "w", encoding="utf-8") as f:
    f.write(html)

如果您的文件编码为UTF-8以外的代码,请指定您的实际编码为编码

 类似资料:
  • 问题内容: 我正在尝试抓取一个网站,但这给我一个错误。 我正在使用以下代码: 我收到以下错误: 我该怎么做才能解决此问题? 问题答案: 我通过添加将其修复。 那意味着变成。

  • 问题内容: 尝试打印从我在python 3.4中使用selenium请求的网站获得的“Á”时,我一直收到UnicodeEncodeError。 我已经在.py文件的顶部定义了 def是这样的: 和例外: 提前致谢 问题答案: 已经知道了。正如在此]答案中指出的那样,编码错误不是来自python,而是来自控制台使用的编码。因此,解决此问题的方法是运行命令(在Windows中): 将编码设置为UTF-

  • 问题内容: 我正在编写一个Python(Python 3.3)程序,以使用POST方法将一些数据发送到网页。通常在调试过程中,我会获取页面结果并使用print()功能将其显示在屏幕上。 代码是这样的: 该方法返回一个bytes编码页面的元素(格式正确的UTF-8文档),直到我停止使用Windows的IDLE GUI并改为使用Windows控制台时,这似乎还可以。返回的页面具有字符(破折号),打印功

  • 问题内容: 当上传具有非ASCII字符的文件时,出现UnicodeEncodeError: 我使用MySQL,nginx和FastCGI运行Django 1.2。 根据Django Trac数据库,这是已解决的问题,但是我仍然有问题。欢迎提供有关如何修复的任何建议。 编辑:这是我的图像字段: 问题答案: 在对此进行更多调查之后,我发现我尚未在我的主要Nginx配置文件中设置字符集: 通过添加以上内

  • 问题内容: 我的python(2.7版)脚本运行良好,可以从本地html文件中获取一些公司名称,但是当涉及到某些特定的国家/地区名称时,则会出现此错误“UnicodeEncodeError:’ascii’编解码器无法编码字符” 此公司名称到来时特别出错 公司名称: KühlfixKälteanlagenIng。Gerhard Doczekal&Co. KG 链接无法处理 错误显示在这行代码中: 问

  • 问题内容: 当我尝试在数据库中插入外来字符时,可能是什么导致此错误? 而我该如何解决呢? 谢谢! 问题答案: 字符U + 201C左双引号在Latin-1(ISO-8859-1)编码中不存在。 这 是 目前在代码页1252(西欧)。这是Windows特定的编码,基于ISO-8859-1,但会将多余的字符放入0x80-0x9F范围内。代码页1252通常与ISO-8859-1混淆,这是一种令人烦恼但现