В 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.