web-dev-qa-db-ja.com

UnicodeEncodeError: 'charmap'コーデックは文字 '\ u2010'をエンコードできません:文字マップは<undefined>にマッピングされます

python 3.4でSeleniumを使用してリクエストされたWebサイトから取得した「Á」を印刷しようとすると、UnicodeEncodeErrorが表示されます。

私はすでに.pyファイルの先頭で定義しました

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

defは次のようなものです。

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>

前もって感謝します

49

すでにそれを理解しました。 this answerに記載されているように、エンコーディングエラーはPythonからではなく、コンソールが使用しているエンコーディングから発生します。したがって、それを修正する方法は、コマンドを(Windowsで)実行することです:

chcp 65001

エンコードをUTF-8に設定してから、プログラムを再度実行します。または、私がpycharmで作業している場合は、[設定]> [エディター]> [ファイルエンコーディング]に移動し、IDEおよびプロジェクトエンコーディングを適宜設定します。

172