2016-11-09 59 views
6

: Latin-1 kodlanıyor çalışmak (Açıkçası UTF-8 onları açılamadı)Python3: için Latince-1 dönüştürün UTF-8 Kodum aşağıdaki gibi görünür

for file in glob.iglob(os.path.join(dir, '*.txt')): 
    print(file) 
    with codecs.open(file,encoding='latin-1') as f: 
     infile = f.read() 

with codecs.open('test.txt',mode='w',encoding='utf-8') as f: 
    f.write(infile) 

dosyalar . Ama ortaya çıkan dosyaları utf-8'e yazmak istiyorum.

Ama bu:

<Trans audio_filename="VALE_M11_070.MP3" xml:lang="español"> 
<Datos clave_texto=" VALE_M11_070" tipo_texto="entrevista_semidirigida"> 
<Corpus corpus="PRESEEA" subcorpus="ESESUMA" ciudad="Valencia" pais="España"/> 

yerine bu (gedit olarak) haline gelir: Ben Terminal üzerinde baskı varsa

<Trans audio_filename="VALE_M11_070.MP3" xml:lang="espa뇃漀氀∀㸀ഀ਀㰀䐀愀琀`漀猀 挀氀愀瘀攀开琀攀砀琀漀㴀∀ 嘀䄀䰀䔀开䴀㄀㄀开 㜀 

, normal görünür.

Daha da kafa karıştırıcı Ben LibreOffice Writer ile sonuçlanan dosyayı açtığınızda ne alıyorum:

<#T#r#a#n#s# (and so on) 

Peki nasıl düzgün bir utf-8 dizeye bir latin 1 dize dönüştürebilirim? Python2'de kolay, ama python3'te bana kafa karıştırıcı geliyor.

#infile = bytes(infile,'utf-8').decode('utf-8') 
#infile = infile.encode('utf-8').decode('utf-8') 
#infile = bytes(infile,'utf-8').decode('utf-8') 

Ama nedense hep aynı garip çıkışı ile sona:

farklı kombinasyonlarda zaten bu çalıştı.

Şimdiden teşekkürler!

Düzenleme: Bu soru Python 3, Python 2.7 ile ilgili değil, yorumda bağlantılı sorulardan farklıdır.

+1

İlk şifresini çözmek dize, daha sonra 'utf-8' olarak yeniden kodlayın? –

+2

http://stackoverflow.com/questions/6539881/python-converting-from-iso-8859-1-latin1-to-utf-8 – user3030010

+0

http://stackoverflow.com/questions/14443760/python- olası kopyası converting-latin1-to-utf8 –

cevap

0

Bu konuda yarı parça bir yol buldum. Bu ... sen/ihtiyacını istiyorum ama doğru yönde başkalarına yardımcı olabilecek ne değildir

# First read the file 
txt = open("file_name", "r", encoding="latin-1") # r = read, w = write & a = append 
items = txt.readlines() 
txt.close() 

# and write the changes to file 
output = open("file_name", "w", encoding="utf-8") 
for string_fin in items: 
    if "é" in string_fin: 
     string_fin = string_fin.replace("é", "é") 

    if "ë" in string_fin: 
     string_fin = string_fin.replace("ë", "ë") 

    # this works if not to much needs changing... 

    output.write(string_fin) 

output.close(); 

* piton 3.6 için detection

0

için not:

your_str = your_str.encode('utf-8').decode('latin-1')