Кодировать строку в GBK в Python
Вопрос
Я пытаюсь увидеть, как будут выглядеть разные строки в разных кодировках ...
Например:
>>> 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/Concodings
Мне было интересно, не вижу ли я никаких изменений в выводе, потому что эти буквы будут отображаться в этом кодировании, или потому что мне нужно каким -то образом включить использование этих кодировки (какой -то импорт необходим?) ...
Решение
Пока используются только значения байтов 0-127, эти кодировки эквивалентны ASCII. То же самое верно для UTF-8. Чтобы действительно увидеть разницу, попробуйте с некоторыми настоящими китайцами.
Другие советы
Персонаж кодируется как 1 или 2 байта. Байт в диапазоне 00–7F - это единственный байт, который означает то же самое, что и в ASCII. Строго говоря, в этом диапазоне 96 символов и 32 кода управления.
Так что нет, ваша тестовая строка символов ASCII не должна кодировать как нечто другое (по крайней мере, для GBK, я не проверял разновидности).