Рубрики
Без рубрики

Функции () Python Encode () и декодирования ()

Методы кодирования и декодирования Python используются для кодирования и декодирования входной строки, используя данную кодировку. Давайте подробно посмотрим на эти две функции в

Автор оригинала: 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