Рассмотрим несколько примеров, демонстрирующих основы кодирования строк в Python. Строки символов ASCII являются простейшей разновидностью строк символов Юникода, которые хранятся как последовательности байтов, представляющих символы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
>>> ord('X') # В кодировке по умолчанию 'X' имеет значение 88 88 >>> chr(88) # Код 88 соответствует символу 'X' 'X' >>> S = 'XYZ' # Строка Юникода из символов ASCII >>> S 'XYZ' >>> len(S) # 3 символа 3 >>> [ord(c) for c in S] # 3 байта с целочисленными значениями [88, 89, 90] |
Обычный текст, состоящий только из 7-битовых символов ASCII, как в данном примере, представляется как последовательность байтов в любых схемах кодирования Юникода, о чем уже говорилось выше:
1 2 3 4 5 6 7 8 9 10 |
S = 'XYZ' >>> S.encode('ascii') # Значения 0..127 в 1 байте (7 битов) каждое b'XYZ' >>> S.encode('latin-1') # Значения 0..255 в 1 байте ( 8 битов) каждое b'XYZ' >>> S.encode('utf-8') # Значения 0..127 в 1 байте, 128..2047 - в 2, другие в 3 или 4 b'XYZ' |
Ваша мечта – стать лидером любимой соцсети или вывести свою группу в топ? Старт получился удачным, но СММ продвижение стало притормаживать. Настала пора искать свежие идеи, нужен новый взгляд. Загляните на этот портал, чтобы освежить знания по СММ продвижению в социальных сетях, узнать о новинках и секретах успеха, познакомиться с опытом, который придаст ускорение.
Фактически объекты типа bytes, возвращаемые данной операцией кодирования строки символов ASCII, в действительность являются последовательностью коротких целых чисел, которые просто выводятся как символы ASCII, когда это возможно:
1 2 3 4 5 6 7 |
S = 'XYZ' >>> S.encode('latin-1')[0] 88 >>> list(S.encode('latin-1')) [88, 89, 90] |