Кодировать строку в gbk в Python - PullRequest
2 голосов
/ 21 января 2011

Я пытаюсь посмотреть, как будут выглядеть разные строки в разных кодировках ...

Например:

>>> str1 = "asdf"
>>> str1.encode('utf-16')
'\xff\xfea\x00s\x00d\x00f\x00'
>>> str1.encode('base64')
'YXNkZg==\n'

И все они получают мне то, что я хочу.

Но я бы хотел посмотреть, как будут выглядеть определенные строки в gbk, gb2312 или gb18030.

>>> str1.encode('gbk')
'asdf'
>>> str1.encode('gb2312')
'asdf'
>>> str1.encode('gb18030')
'asdf'

Разве выходные данные не должны отличаться от asdf?

У меня есть Python 2.7, и я могу увидеть gbk.py и другие файлы в lib / encodings

Мне было интересно, не вижу ли изменений в выводе, потому что эти буквы будут отображаться одинаково в этой кодировке, или потому что мне нужно каким-то образом разрешить использование этих кодировок (нужен какой-то импорт?) ...

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Пока используются только байтовые значения 0-127, эти кодировки эквивалентны ASCII. То же самое верно для UTF-8. Чтобы действительно увидеть разницу, попробуйте какой-нибудь настоящий китайский.

1 голос
/ 21 января 2011

Со страницы Википедии:

Символ кодируется как 1 или 2 байт. Байт в диапазоне 00–7F является один байт, который означает то же самое как это происходит в ASCII. Строго говоря, есть 96 символов и 32 управляющих кода в этом диапазоне.

Так что нет, ваша тестовая строка символов ASCII не должна кодироваться как-то иначе (по крайней мере, не для GBK, я не проверял варианты).

...