Преобразовать объект Unicode в латинскую строку с сущностями - PullRequest
3 голосов
/ 02 февраля 2012

У меня есть объект Unicode, такой как

x = u"a & 日本語:  enči hallöle"

и хотите преобразовать его в строку латиницы-1 с html-сущностями типа

"a & 日本語: enči hallöle"

причина этого в том, что я хочу, чтобы мои пользователи могли вводить данные в юникоде, но моя устаревшая база данных, где мне нужно сохранять свои данные, принимает только строки латиницы 1 («ö» не должен быть преобразован, но другие специальные символы должны быть преобразованы)

Есть идеи, какой модуль использовать здесь? Я искал модуль кодирования, посмотрел некоторые кодеки, попробовал немного с методами объектов Unicode, но не нашел разумного решения.

Ответы [ 2 ]

4 голосов
/ 02 февраля 2012

Используйте параметр "xmlcharrefreplace" unicode.encode, но учтите, что он не переведет & в & для вас:

>>> x = "a & 日本語:  enči hallöle".decode("utf-8")
>>> x.replace("&", "&").encode("latin-1", "xmlcharrefreplace")
'a & 日本語:  enči hall\xf6le'
0 голосов
/ 02 февраля 2012

Просто закодируйте его в UTF-8, это должно быть сохранено.

>>> x.encode("UTF-8")
'a & \xc3\xa6\xc2\x97\xc2\xa5\xc3\xa6\xc2\x9c\xc2\xac\xc3\xa8\xc2\xaa\xc2\x9e:  en\xc3\x84\xc2\x8di hall\xc3\x83\xc2\xb6le'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...