Как конвертировать из Unicode с Python - PullRequest
1 голос
/ 03 марта 2010

В базе данных я сохранил строку, в которой проблемное слово: za \ u0161 \ u010diten.

[ред .: «проблемное слово», похоже, изменилось]

Когда я хочу представить эту строку на своей странице (с req.write (string) ). Я получаю эту ошибку: UnicodeEncodeError: кодек 'ascii' не может кодировать символы в позиции 686-687: порядковый номер не в диапазоне (128) .

Я использую Python 2.X для Windows | Linux | Mac. [ред .: выберите один]
Моя строка на самом деле называется html_h2. Вот детали, которые меня попросили: [ред .: вставлены пробелы для разборчивости]

>> print type(html_h2)
<type 'unicode'>
>> print repr(html_h2)
u"\n<table bgcolor='white' border=1 cellpadding=2 cellspacing=1 rules=rows frame=box>
  <tr>
    <td align='center'>
      <img src=img/_up/upload/2010/03/03/… width=120 height=100/>
    </td>
    <td align='left' style=width:86%>
      <h3>V Gr\u010diji kot v vojni</h3>
      Gr\u0161ki premier je finan\u010dne razmere v dr\u017eavi, ki je skoraj pred bankrotom, primerjal z razmerami v vojni. Napovedani so ostri var\u010devalni ukrepi.
    </td>
  </tr>
</table>"

Я вставляю поля базы данных в строку с% s. [изд .: не имеет значения]

Когда я поступаю так, как предложил Игнасио:

req.write(html_h2.encode('XXXXXX'))

где XXXXXX - кодировка, которую я объявил в заголовке Content-Type, это происходит:

[ред .: удалить результат, который не происходит]
(1) Он отображается так, как я и надеялся.
(2) Я получаю сообщение об ошибке: XXXXXXXXXXXXXXXXXXXXXXXXXX

Ответы [ 2 ]

2 голосов
/ 03 марта 2010
req.write(string.encode(encoding))

где encoding - кодировка, которую вы объявили в заголовке Content-Type.

0 голосов
/ 03 марта 2010

Если string относится к модулю string, то да, что string не имеет encode. Если string на самом деле является unicode объектом, то у него есть encode, но, возможно, string может фактически быть str объектом.

Вернуться к основам: пожалуйста, дайте нам некоторую информацию.

Пожалуйста, покажите результаты:

# Python 2.X
print type(string)
print repr(string)

или

# Python 3.X
print(type(string))
print(ascii(string))

Тогда мы можем дать вам информированный совет, а не неосведомленные догадки.

Примечание: пожалуйста, отредактируйте свой вопрос, чтобы показать вывод, не отвечайте в комментарии. Используйте копирование / вставку, не печатайте из памяти.

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