как строки хранятся в компьютерах python? - PullRequest
3 голосов
/ 15 марта 2012

Я полагаю, что большинство из вас, кто знаком с Python, читали Dive Into Python 3. В главе 4.3 говорится следующее:

В Python 3 все строки представляют собой последовательности символов Unicode.Нет такой вещи, как строка Python, закодированная в UTF-8, или строка Python, закодированная как CP-1252.«Является ли эта строка UTF-8?» - неверный вопрос.

Как-то я понимаю, что это значит: строки = символы в наборе Unicode, и Python может помочь вам кодировать символы в соответствии с различными методами кодирования,Тем не менее, символы в Pythons хранятся как байты на компьютерах в любом случае?Например, s = 'strings', а s обязательно хранится на моем компьютере в виде байта strem '0100100101 ...' или любого другого.Тогда какой метод кодирования используется здесь - метод кодирования Python по умолчанию?

Спасибо!

1 Ответ

7 голосов
/ 15 марта 2012

Python 3 различает текст и двоичные данные . Текст гарантированно будет в Unicode, хотя, насколько я мог видеть, никакой конкретной кодировки не указано. Так что это может быть UTF-8, или UTF-16, или UTF-32¹ - но вы даже не заметите.

Суть здесь в том, что вам все равно. Если вы хотите работать с текстом, используйте текстовые строки и обращайтесь к ним по кодовой точке (которая представляет собой номер одного символа Unicode и не зависит от внутреннего UTF), что может организовать кодовые точки в несколько меньших кодов единиц ). Если вам нужны байты, используйте b"" и получите доступ к ним по байту. И если вы хотите иметь строку в последовательности байтов в определенной кодировке, вы используете .encode().


¹ Или даже UTF-9, если кто-то достаточно безумен, чтобы реализовать Python на PDP-10.

...