2015-09-03 13 views
35

Continuo a ricevere UnicodeEncodeError quando provo a stampare un 'Á' che ottengo da un sito Web richiesto utilizzando selenio in python 3.4.UnicodeEncodeError: il codec 'charmap' non può codificare il carattere ' u2010': mappe dei caratteri su <undefined>

ho già definito nella parte superiore del mio file .py

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

la definizione è qualcosa di simile:

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) 

e l'eccezione:

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> 

grazie in anticipo

+0

Conosci una soluzione per lo stesso problema di codifica ma per scrivere in un file? – Gennadiii

risposta

131

Già capito. Come si nota nella risposta this, l'errore di codifica non proviene da python, ma dalla codifica utilizzata dalla console. Quindi il modo per risolvere il problema è quello di eseguire il comando (in Windows):

chcp 65001 

che imposta la codifica UTF-8 e quindi eseguire nuovamente il programma. O se lavori su pycharm come sono, vai su Impostazioni> Editor> Codifica dei file e imposta le codifiche IDE e Project in modo accidentale.

+4

un milione di voti. era la console non il pitone. – AwokeKnowing

+0

anche se ho cambiato la codifica pyCharm mi dà ancora lo stesso errore (l'ho risolto con la console di Windows, ma non sono più in grado di lavorare all'interno di pycharm) – Soorena

+0

Ho sempre rilevato questo errore. Soluzione eccezionale Milioni di voti per questo !!! –