Документация по Python. Теоретические материалы, и практические задачи

Python кодировка строки

В python кодировка строки используется достаточно часто, для этого есть метод строки encode(). Данный метод возвращает строку в указанной нами кодировке.

                    
title = 'Python Programming'

# Изменяем кодировку на utf-8
print(title.encode())

# Результат: b'Python Programming'

Синтаксис и параметры метода encode()

                    
string.encode(encoding='UTF-8',errors='strict')

По умолчанию метод encode() не имеет обязательных параметров, строка находится в кодировке utf-8. В случае возникновения какой либо ошибки, получаем исключение UnicodeDecodeError.  Но, для того что бы у нас все было аккуратно, нам необходимы два параметра.

  • Кодировка — Тип кодировки, в которой будет кодирована строка
  • Ошибка — своего рода реакция на ошибку. У данного метода есть 6 вариантов реагирования на ошибки.
    • Строгая реакция — данный тип ошибки идет по умолчанию, вызывается исключение UnicodeDecodeError.
    • Игнор — Игнорируем не кодируемый юникод
    • Замена — заменяет некодируемый юникод на символ ?
    • xmlcharrefreplace — Вставляет ссылку на XML символ вместо некодируемого юникода
    • Обратная косая черта — Вставка escape последовательность вместо некодируемого юникода
    • namereplace — вставка escape последовательности \N{…}  вместо некодируемого юникода

Пример 1. Кодировка по умолчанию

                    
# .юникод строка
string = 'pythön!'

# Вывод на печать
print('The string is:', string)

# кодировка по умолчанию utf-8
string_utf = string.encode()

# Результат
print('The encoded version is:', string_utf)

Пример 2. Кодировка с параметром ошибки

                    
# Юникод строка
string = 'pythön!'

# Печать
print('The string is:', string)

#Игнорирование ошибки
print('The encoded version (with ignore) is:', string.encode("ascii", "ignore"))

# Замена ошибки
print('The encoded version (with replace) is:', string.encode("ascii", "replace"))

Начинаю с версии Python 3.0 строки хранятся в формате Unicode. Каждый символ в строке представляется кодовой точкой, соответственно строка это просто последовательность кодовых точек Юникода.

Существуют различные кодировки, наиболее популярными кодировками являются utf-8 ASCII. Благодаря методу encode() вы всегда можете конвертировать строки в любой поддерживаемый Python вид кодировки. Как говорилось выше, Python по умолчанию использует кодировку UTF-8.