Веб-версияОткрыть в Telegram

ПостUTF-8 - это кодировка с переменной длиной. Один символ может быть закодирован с использованием одного, двух, трёх или че…

4 августа 2026
Б
Библиотека Python разработчика | Книги по питону
UTF-8 - это кодировка с переменной длиной. Один символ может быть закодирован с использованием одного, двух, трёх или четырёх байтов. Это означает, что нельзя начать чтение строки в кодировке UTF-8 с произвольного байта, так как это может случайно разрушить символ: In : lion = 'Löwe' In : lion.encode('utf-8')[2:] Out: b'\xb6we' In : lion.encode('utf-8')[2:].decode('utf-8') ... UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 0: invalid start byte Также это означает, что для пропуска первых N символов строки их необходимо прочитать и декодировать. Рассчитать смещение заранее невозможно. Однако можно пропустить фиксированное количество байтов, принимая во внимание некоторые особенности. Вот как может быть закодирован символ в UTF-8: 0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx 10xxxxxx 10xxxxxx 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx Как видно, байт является начальным байтом символа, если его вид не совпадает с 10xxxxxx. Такие байты называются продолжением символа (continuation bytes). Давайте пропустим их: def cut_bytes(s, n): result = s.encode('utf-8')[n:] mask = int('11000000', 2) conbyte = int('10000000', 2) while result[0] and result[0] & mask == conbyte: result = result[1:] return result.decode('utf-8') Пример использования: In : cut_bytes(lion, 2) Out: 'we' In : cut_bytes(lion, 1) Out: 'öwe' 📲 Мы в MAX 👉@BookPython
5 · 1.2K ·

Рядом в ленте

ББиблиотека Python разработчика | Книги по питонуКогда вы создаете кастомный метод __repr__ для объекта, обычно нужно включить представление его атрибутов. Однако важно помнить, что нужно явно вызывать repr(),ББиблиотека Python разработчика | Книги по питонуТесты могут требовать временные файлы или директории. Для этого отлично подойдет модуль tempfile. Так как временные файлы обычно нужно удалять после использован
это сообщение
ББиблиотека Python разработчика | Книги по питонуИногда вам нужно запустить блок кода с несколькими контекстными менеджерами. Например: with open('f') as f: with open('g') as g: with open('h') as h: pass НачинББиблиотека Python разработчика | Книги по питонуРассмотрим следующую иерархию классов: class GrandParent: pass class Parent1(GrandParent): pass class Parent2(GrandParent): pass class Child(Parent1, Parent2):
ББиблиотека Python разработчика | Книги по питонуБиблиотека Python разработчика | Книги по питону@BookPython · канал · Технологии
18 042подписчиков828средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем