web-dev-qa-db-fra.com

UnicodeEncodeError: le codec 'charmap' ne peut pas coder le caractère '\ u2010': les mappages de caractères sur <non défini>

Je continue à recevoir UnicodeEncodeError lorsque j'essaie d'imprimer un "Á" que je reçois d'un site Web demandé à l'aide de Selenium dans python 3.4.

J'ai déjà défini en haut de mon fichier .py

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

la def est quelque chose comme ça:

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)

et l'exception:

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>

merci d'avance

49
Andrés Fernández

Déjà compris. Comme indiqué dans la réponse this , l'erreur de codage ne provient pas de python, mais du codage utilisé par la console. La solution consiste donc à exécuter la commande (sous Windows):

chcp 65001

qui définit le codage sur UTF-8, puis réexécutez le programme. Ou, si vous travaillez avec pycharm comme je le faisais, allez dans Paramètres> Editeur> Codages de fichiers et définissez les codages IDE et Projet en conséquence).

172
Andrés Fernández