Как преобразовать строку utf-8 в big5 с помощью python? - PullRequest
1 голос
/ 05 января 2011

Я использую Python 2.6.6 Моя локаль ('en_US', 'UTF8')

Я пробую много способов конвертировать строку utf-8 в big5, но она не может работать. Если вы знаете, как это сделать, пожалуйста, дайте мне несколько советов, большое спасибо.


Китайское слово под названием «單車», оно означает «велосипед»

Unicode - это \ u55ae \ u8eca

str_a = u'\u55ae\u8eca'
str_b = '\u55ae\u8eca'
print str_a    # output '單車'
print str_b    # output '\u55ae\u8eca'

Я знаю, что str_a может работать, но я хочу также преобразовать str_b в big5.

Я пробую декодировать, кодировать, Unicode, но он все еще не может работать.

Есть хорошая идея? Спасибо.

Ответы [ 2 ]

5 голосов
/ 05 января 2011

str_b - это последовательность байтов:

In [19]: list(str_b)
Out[19]: ['\\', 'u', '5', '5', 'a', 'e', '\\', 'u', '8', 'e', 'c', 'a']

Обратная косая черта и u и т. Д. - все это отдельные символы. Сравните это с последовательностью кодовых точек Unicode в объекте Unicode str_a:

In [24]: list(str_a)
Out[24]: [u'\u55ae', u'\u8eca']

Чтобы преобразовать неправильно сформированную строку str_b в декодирование Unicode с помощью unicode-escape:

In [20]: str_b.decode('unicode-escape')
Out[20]: u'\u55ae\u8eca'

In [21]: print(str_b.decode('unicode-escape'))
單車
3 голосов
/ 05 января 2011

Вы должны быть в состоянии сделать это:

str_a = u'\u55ae\u8eca'
str_b = str_a.encode('big5')
print str_a
print str_b.decode('big5')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...