Python: преобразовать строку из UTF-8 в Latin-1 - PullRequest
16 голосов
/ 29 ноября 2010

Я чувствую себя здесь застрявшим, пытаясь изменить кодировки с 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 (он же latin-1) с помощью ie iconv.exe и встраивать данные все в порядке.

В принципе, кто-то может помочь мне преобразовать, например, символ á UTF-8 кодируется в шестнадцатеричном виде: C3 A1 в латинский-1 в шестнадцатеричном виде: E1?

Заранее спасибо

Ответы [ 4 ]

19 голосов
/ 29 ноября 2010

Вместо .encode('utf-8') используйте .encode('latin-1').

5 голосов
/ 29 ноября 2010
data="UTF-8 data"
udata=data.decode("utf-8")
data=udata.encode("latin-1","ignore")

Должен это сделать.

3 голосов
/ 29 ноября 2010

Можете ли вы предоставить более подробную информацию о том, что вы пытаетесь сделать? В общем, если у вас есть строка в кодировке Unicode, вы можете использовать команду encode для преобразования ее в строку с соответствующей кодировкой. Например:

>>> a = u"\u00E1"
>>> type(a)
<type 'unicode'>
>>> a.encode('utf-8')
'\xc3\xa1'
>>> a.encode('latin-1')
'\xe1'
0 голосов
/ 19 августа 2015

Если предыдущие ответы не решили вашу проблему, проверьте источник данных, которые не будут правильно распечатываться / преобразовываться.

В моем случае я использовал json.load для данных, неправильно считанных из файла, но не использовал encoding="utf-8". Попытка де / кодировать полученную строку в latin-1 просто не помогает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...