Мой код выглядит следующим образом:Python3: Преобразование Latin-1 в UTF-8
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)
файлы, я работаю с кодируются в Latin-1 (я не мог открыть их в UTF-8, очевидно) , Но я хочу записать результирующие файлы в utf-8.
Но это:
<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"/>
Вместо этого становится (в Gedit):
<Trans audio_filename="VALE_M11_070.MP3" xml:lang="espa뇃漀氀∀㸀ഀ㰀䐀愀琀`漀猀 挀氀愀瘀攀开琀攀砀琀漀㴀∀ 嘀䄀䰀䔀开䴀开 㜀
Если я печатаю его на терминал, он показывает нормально.
Еще более запутанным является то, что я получаю, когда я открываю полученный файл с LibreOffice Writer:
<#T#r#a#n#s# (and so on)
Так как я правильно конвертировать Latin-1 строку в строку UTF-8? В python2 это легко, но в python3 мне кажется сбивающим с толку.
Я уже пробовал их в различных комбинациях:
#infile = bytes(infile,'utf-8').decode('utf-8')
#infile = infile.encode('utf-8').decode('utf-8')
#infile = bytes(infile,'utf-8').decode('utf-8')
Но почему-то я всегда в конечном итоге с той же странной продукции.
Заранее благодарен!
Редактировать: Этот вопрос отличается от вопросов, связанных с комментарием, поскольку это касается Python 3, а не Python 2.7.
Первый декодировать строки, затем перекодировать его на 'utf-8'? –
Возможный дубликат http://stackoverflow.com/questions/6539881/python-converting-from-iso-8859-1-latin1-to-utf-8 – user3030010
http://stackoverflow.com/questions/14443760/python- convertting-latin1-to-utf8 –