DamiRocK

Python: коды символов, chr() и отличие Unicode от байтов

Получаем символы по кодам 126, 94 и 37. Различаем таблицу кодовых точек и кодировку текста, избегая неверного предположения о настройках всех файлов.

Число может обозначать символ

Чтобы хранить текст, символам сопоставляют числовые коды, а кодировка определяет представление текста байтами. В Python функция chr() возвращает строку из символа с указанной кодовой точкой Unicode.

В диапазоне ASCII эти коды совпадают с привычной таблицей ASCII, поэтому исходное упражнение можно решить непосредственно через chr().

Задание и решение

Выведите символы с кодами 126, 94 и 37, каждый на отдельной строке:

print(chr(126))
print(chr(94))
print(chr(37))

Результат:

~
^
%

Порядок вызовов соответствует порядку числовых кодов в условии. Печать самих чисел не решает задачу: требуется сначала получить символы.

Unicode и кодировка

Редакционное уточнение к объяснению источника: кодовая точка символа и последовательность байтов UTF-8 — не одно и то же. Одна строка может быть закодирована разными способами; при чтении нужно использовать согласованную кодировку.

Указание encoding="utf-8" при работе с текстовым файлом делает выбранный способ явным. Нельзя предполагать, что любая программа, база данных или любой режим чтения Python во всех окружениях автоматически использует одинаковую настройку.

Что проверяет упражнение

Задание знакомит с переходом от числового кода к символу, а не с чтением внешних файлов. Ошибочная интерпретация байтов другой кодировкой может давать искажённый текст, но для приведённых трёх вызовов никаких файлов и сетевых данных не требуется.

Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Упражнение сохранено; понятия и настройки уточнены.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.