Как я могу преобразовать коды символов Shift_JIS в символы Unicode в python?

У меня есть список кодов символов Shift_JIS (в целых числах), которые я хочу преобразовать в символы Юникода. Думаю, мне нужна версия функции chr()/unichr(), которая работает в других кодировках. Я пробовал decode() в сочетании с hex(), но он декодирует только саму строку, а не шестнадцатеричное значение.

Пример ввода и вывода:

input = [91, 92, 48, 528]

output = ["[", "¥", "0", "0"]

Может кто-нибудь помочь мне? Заранее спасибо.


person ubuntor    schedule 18.08.2011    source источник
comment
Это работает: shift_str = chr(shift_int // 256) + chr(shift_int % 256), затем shift_uni = unicode(shift_str, 'shift-jis')   -  person agf    schedule 18.08.2011
comment
Можете ли вы показать образцы входных и выходных данных, которые вам понадобятся?   -  person Ned Batchelder    schedule 19.08.2011
comment
Что вы имеете в виду под целыми числами? У вас есть список значений типа int? Или строку, содержащую числа в человеческом формате с основанием 10 (т. е. только символы от 0 до 9 и пробел, что-то в этом роде)? Или что? Откуда он берется - текстовый файл, пользовательский ввод и т.д.? Опишите весь процесс.   -  person Karl Knechtel    schedule 19.08.2011


Ответы (1)


Если вы начнете с чего-то вроде этого:

bytearray = [65, 66, 67, 200, 156, 130]

Тогда это сделает это:

>>> ustring = reduce(operator.add, map(chr, bytearray)).decode('shift_jis')
>>> ustring
u'ABC\uff88\u6029'
person wberry    schedule 18.08.2011