Lectura de caracteres no ASCII de un archivo de texto

Estoy usando python 2.7. He intentado muchas cosas como codecs pero no funcionó. Cómo puedo arreglar esto.

myfile.txt

wörd 

Mi código

 f = open('myfile.txt','r') for line in f: print line f.close() 

Salida

 s\xc3\xb6zc\xc3\xbck 

La salida es la misma en eclipse y en la ventana de comando. Estoy usando Win7. No hay ningún problema con los caracteres cuando no leo de un archivo.

    1. En primer lugar – detectar la encoding del archivo
     from chardet import detect encoding = lambda x: detect(x)['encoding'] print encoding(line) 
    1. luego – conviértalo a Unicode o su cadena de encoding predeterminada:
     n_line=unicode(line,encoding(line),errors='ignore') print n_line print n_line.encode('utf8') 
     import codecs #open it with utf-8 encoding f=codecs.open("myfile.txt","r",encoding='utf-8') #read the file to unicode string sfile=f.read() #check the encoding type print type(file) #it's unicode #unicode should be encoded to standard string to display it properly print sfile.encode('utf-8') #check the type of encoded string print type(sfile.encode('utf-8')) 

    Es la encoding del terminal. Intente configurar su terminal con la misma encoding que está utilizando en su archivo. Te recomiendo que uses UTF-8.

    Por cierto, es una buena práctica descodificar y codificar todas las entradas y salidas para evitar problemas:

     f = open('test.txt','r') for line in f: l = unicode(line, encoding='utf-8')# decode the input print l.encode('utf-8') # encode the output f.close()