Почему ascii
не работает?
str='美'
не является символом ASCII, он находится вне диапазона ASCII и поэтому не может быть представлен как символ ASCII.
Из учебника Unicode для python :
Кодировки не должны обрабатывать все возможные символы Unicode, и большинство кодировок этого не делают.Например, кодировка Python по умолчанию - это кодировка 'ascii'.Правила для преобразования строки Unicode в кодировку ASCII просты;для каждой кодовой точки:
Если кодовая точка <128, каждый байт совпадает со значением кодовой точки. </p>
Если кодовая точка 128 или больше, строка Unicode не может быть представлена в этой кодировке.(В этом случае Python вызывает исключение UnicodeEncodeError.)
как понять Out[2]
и Out[3]
, т. Е. Что они на самом делеare?
Это байтовые строки (не символьные).Out[2]
- это последовательность байтов, которая представляет кодовую точку 美
в единицах кода UTF-8.Обозначение \xe7
означает байт с шестнадцатеричным значением e7.Out[3]
- это последовательность байтов, которая представляет кодовую точку 美
в единицах кода UTF-16.
Чтобы понять разницу между символами, байтами и единицами кода, внимательно и полностью прочитайте учебник Unicode для python .Для другого, довольно хорошего, обращения с тем же материалом, прочитайте * 1048 Джоэла Спольски * Абсолютный минимум каждый разработчик программного обеспечения, абсолютно, положительно должен знать о Unicode и наборах символов (никаких оправданий!) .Ты должен знать это много, никаких оправданий!