Автор оригинала: Pankaj Kumar.
Функции () Python Encode () и декодирования ()
Python’s кодировать
и декодировать
Методы используются для кодирования и декодирования входной строки, используя данную кодировку. Давайте подробно посмотрим на эти две функции в этой статье.
Кодировать данную строку
Мы используем кодировать ()
Способ на входной строке, который имеет каждый элемент строки.
Формат :
input_string.encode(encoding, errors)
Это кодирует input_string
Использование кодирование
, где Ошибки
Решивает поведение, следовательно, если, по любому шанту, кодирование не удается в строке.
кодировать ()
приведет к последовательности Байты
Отказ
inp_string = 'Hello' bytes_encoded = inp_string.encode() print(type(bytes_encoded))
Это приводит к объекту <классные байты '>
, как и ожидалось:
Тип кодирования, который следует следовать, отображается кодирование
параметр. Существуют различные типы схем кодирования персонажей, из которых схема UTF-8 используется в Python по умолчанию.
Давайте посмотрим на кодирование
Параметр с использованием примера.
a = 'This is a simple sentence.' print('Original string:', a) # Decodes to utf-8 by default a_utf = a.encode() print('Encoded string:', a_utf)
Выход
Original string: This is a simple sentence. Encoded string: b'This is a simple sentence.'
Примечание : Как вы можете наблюдать, мы закодировали входную строку в формате UTF-8. Хотя не имеет большого значения, вы можете наблюдать, что строка префиксирована с помощью B
Отказ Это означает, что строка преобразуется в поток байтов, что это сохраняется на любом компьютере. Как байты!
Это на самом деле не читаемое для чтения человека и представлено только как оригинальная строка для чтения, префиксирована с помощью B
, чтобы обозначить, что это не строка, а последовательность байтов.
Обработка ошибок
Есть различные виды Ошибки
некоторые из которых упоминаются ниже:
Тип ошибки | Поведение |
строгий | Поведение по умолчанию, которое повышает UnicodedECodeError на неудаче. |
игнорировать | Игнорирует неконкодируемый Unicode из результата. |
заменять | Заменяет все символы Unicodable Unicode с вопросительным знаком (?) |
Backslashreplace. | Вставляет escape escape escape (\ unnnn) вместо символов Unicode uncodeable Unicode. |
Давайте посмотрим на вышеуказанные концепции, используя простой пример. Мы рассмотрим входную строку, где не все символы инкадируются (например, Ö
),
a = 'This is a bit möre cömplex sentence.' print('Original string:', a) print('Encoding with errors=ignore:', a.encode(encoding='ascii', errors='ignore')) print('Encoding with errors=replace:', a.encode(encoding='ascii', errors='replace'))
Выход
Original string: This is a möre cömplex sentence. Encoding with errors=ignore: b'This is a bit mre cmplex sentence.' Encoding with errors=replace: b'This is a bit m?re c?mplex sentence.'
Декодирование потока байтов
Подобно кодированию строки, мы можем декодировать поток байтов в строковый объект, используя декодировать ()
функция.
Формат:
encoded = input_string.encode() # Using decode() decoded = encoded.decode(decoding, errors)
С кодировать ()
Преобразует строку в байты, декодировать ()
просто делает реверс.
byte_seq = b'Hello' decoded_string = byte_seq.decode() print(type(decoded_string)) print(decoded_string)
Выход
Hello
Это показывает, что декодировать ()
Преобразует байты на строку Python.
Похоже на тех из тех из кодировать ()
, декодирование
Параметр решает тип кодировки, из которого декодируется последовательность байтов. Ошибки
Параметр обозначает поведение, если декодирование не удается, что имеет те же значения, что и у кодировать ()
Отказ
Важность кодирования
Поскольку кодирование и декодирование входной строки зависит от формата, мы должны быть осторожны при кодировании/декодировании. Если мы используем неправильный формат, он приведет к неправильному выводу и может привести к ошибкам.
Ниже фрагмент показывает важность кодирования и декодирования.
Первое декодирование неверно, так как он пытается декодировать входную строку, которая кодируется в формате UTF-8. Второй правильный, поскольку форматы кодирования и декодирования одинаковы.
a = 'This is a bit möre cömplex sentence.' print('Original string:', a) # Encoding in UTF-8 encoded_bytes = a.encode('utf-8', 'replace') # Trying to decode via ASCII, which is incorrect decoded_incorrect = encoded_bytes.decode('ascii', 'replace') decoded_correct = encoded_bytes.decode('utf-8', 'replace') print('Incorrectly Decoded string:', decoded_incorrect) print('Correctly Decoded string:', decoded_correct)
Выход
Original string: This is a bit möre cömplex sentence. Incorrectly Decoded string: This is a bit m��re c��mplex sentence. Correctly Decoded string: This is a bit möre cömplex sentence.
Заключение
В этой статье мы узнали, как использовать кодировать ()
и декодировать ()
Методы для кодирования входной строки и декодируют кодированную байтовую последовательность.
Мы также узнали о том, как он обрабатывает ошибки в кодировке/декодировании через Ошибки
параметр. Это может быть полезно для целей шифрования и дешифрования, таких как локально кэширование зашифрованного пароля и декодирование их для последующего использования.
использованная литература
- С т а т ь я j o u r n a l d e v в e n c o d e – d e c o d e