Python преобразование номера символа кодовой страницы в Unicode - PullRequest
0 голосов
/ 05 ноября 2018

По умолчанию print (chr (195)) отображает символ Unicode в позиции 195 («Ã») Как мне распечатать chr (195), который появляется на кодовой странице 1251, т.е. "Г" Я пытался: print (chr (195) .decode ('cp1252')) и различные методы .encode.

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Поскольку вы не можете хранить «сырое» значение 0xC3 в строке (и если вы это сделали, у вас не должно быть - необработанные двоичные «неразобранные» данные должны быть байтовым массивом): правильный способ преобразования из необработанного байт массив действительно .decode('cp1251'):

>>> print (b'\xc3'.decode('cp1251'))
Г

Однако, если вы уже получили его в строке, то проще всего сначала преобразовать строку в объект bytes, используя кодировку 1-на-1 Latin-1:

str = 'Ãamma'
print (bytes(str.encode('latin1')).decode('cp1251'))
>>> Гamma
0 голосов
/ 05 ноября 2018

В Python 3 chr(n) возвращает строку Unicode, которая может быть только закодирована. Используйте bytes для создания байтовых строк, которые можно декодировать:

>>> bytes([195])
b'\xc3'
>>> bytes([195]).decode('cp1251')
'Г'
>>> bytes([195,196,197])
b'\xc3\xc4\xc5'
>>> bytes([195,196,197]).decode('cp1251')
'ГДЕ'
0 голосов
/ 05 ноября 2018

Вы можете использовать urllib

print urllib.quote_plus(str.encode('cp1251'))

Также помните, что если вы используете международные строки, обязательно включите префикс u в строку, которую вы анализируете.

str = u"whateverhere"

изменено для удаления downvote ??

...