Ответ 1
Вместо .encode('utf-8')
используйте .encode('latin-1')
.
Я чувствую себя сложным, пытаясь изменить кодировки с помощью Python 2.5
У меня есть ответ XML, который я кодирую в UTF-8: response.encode('utf-8')
. Это хорошо, но программа, которая использует эту информацию, не любит эту кодировку, и мне нужно ее преобразовать на другую кодовую страницу. Реальный пример заключается в том, что я использую модуль python ghostscript для вставки данных pdfmark в файл PDF. Конечный результат с неправильными символами в Acrobat.
Я делал многочисленные комбинации с .encode()
и .decode()
между 'utf-8' и 'latin-1', и это сводит меня с ума, поскольку я не могу вывести правильный результат.
Если я вывешу строку в файл с помощью .encode('utf-8')
, а затем преобразую этот файл из UTF-8 в CP1252 (aka latin-1) с помощью iconv.exe и вставляем данные, все это хорошо.
В принципе, кто-то может мне помочь преобразовать, т.е. символ á, который UTF-8 закодирован как hex: C3 A1
в латинский-1 как hex: E1
?
Заранее спасибо
Вместо .encode('utf-8')
используйте .encode('latin-1')
.
data="UTF-8 data"
udata=data.decode("utf-8")
data=udata.encode("latin-1","ignore")
Должно это сделать.
Можете ли вы предоставить более подробную информацию о том, что вы пытаетесь сделать? В общем случае, если у вас есть строка в Юникоде, вы можете использовать кодировку для преобразования ее в строку с соответствующей кодировкой. Например:
>>> a = u"\u00E1"
>>> type(a)
<type 'unicode'>
>>> a.encode('utf-8')
'\xc3\xa1'
>>> a.encode('latin-1')
'\xe1'
Если предыдущие ответы не решают вашу проблему, проверьте источник данных, которые не будут правильно печатать/конвертировать.
В моем случае я использовал json.load
для данных, некорректно прочитанных из файла, не используя encoding="utf-8"
. Попытка декомпрессии/кодирования результирующей строки на latin-1
просто не помогает...