UnicodeEncodeError: 'charmap'编解码器无法编码字符'\u2010':该字符映射到<undefined>。

52

我在使用Python 3.4中的selenium请求网站并获取一个包含'Á'字符的文本时,不断收到UnicodeEncodeError错误。

我已经在.py文件的顶部定义了:

# -*- coding: utf-8 -*-

这个函数大致是这样的:

from selenium import webdriver

b = webdriver.Firefox()
b.get('http://fisica.uniandes.edu.co/personal/profesores-de-planta')
dataProf = b.find_elements_by_css_selector('td[width="508"]')
for dato in dataProf:
        print(datos.text)

还有一个例外:

Traceback (most recent call last):
  File "C:/Users/Andres/Desktop/scrap/scrap.py", line 444, in <module>
    dar_p_fisica()
  File "C:/Users/Andres/Desktop/scrap/scrap.py", line 390, in dar_p_fisica
    print(datos.text) #.encode().decode('ascii', 'ignore')
  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 character '\u2010' in position 173: character maps to <undefined>

thanks in advance


你知道解决相同编码问题的写入文件的方法吗? - Gennadiii
1个回答

180

我已经想通了。正如这个答案中所指出的,编码错误并不是来自于Python,而是来自于控制台使用的编码方式。因此,解决问题的方法是运行以下命令(在Windows下):

chcp 65001

将编码设置为UTF-8,然后再次运行程序。或者如果像我一样使用PyCharm,请转到 设置>编辑器>文件编码 并相应地设置IDE和项目编码。


8
一百万个赞。是控制台而不是Python。 - AwokeKnowing
即使我更改了pyCharm的编码,它仍然会给我相同的错误(我用Windows控制台解决了这个问题,但我不能再在pycharm中工作了)。 - Soorena
1
总是遇到这个错误。厉害的解决方案。数百万点赞! - Vitali
4
同时,在命令提示符中运行:setx PYTHONIOENCODING utf-8 ... 然后,重新启动命令提示符,并输入echo %PYTHONIOENCODING%来确保已设置。在Python中,如果需要可以导入sys,然后打印sys.stdout.encoding,应该会显示utf-8。 - Andrew
"utf-8" 不被识别为内部或外部命令,如何解决?@Andrew - Joyson
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接