Python מחרוזת encode() decode()

פונקציית encode במחרוזת Python

פונקציית encode ב-Python משמשת לקידוד המחרוזת באמצעות הקידוד שסופק. פונקציה זו מחזירה את אובייקט הבתים. אם לא סופק קידוד, השימוש בקידוד "utf-8" יהיה כברירת מחדל.

פונקציית decode בבתים של Python

פונקציית decode בבתים של Python משמשת להמרת בתים לאובייקט מחרוזת. שתי הפונקציות הללו מאפשרות לנו לציין את הסכימת טיפול השגיאות שנעשה שימוש בהן לצורך טעיות הקידוד/הפענוח. המחרוזת המוגדרת בברירת המחדל היא 'strict' המשמעותה שטעויות הקידוד מפעילות חריגת קידוד ב-Unicode. ערכים אפשריים נוספים הם 'ignore', 'replace' ו-'xmlcharrefreplace'. בואו נסתכל על דוגמה פשוטה של פונקציות encode() ו-decode() של מחרוזות Python.

str_original = 'Hello'

bytes_encoded = str_original.encode(encoding='utf-8')
print(type(bytes_encoded))

str_decoded = bytes_encoded.decode()
print(type(str_decoded))

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)

פלט:

<class 'bytes'>
<class 'str'>
Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True

הדוגמה לעיל לא ממחישה בבהירות את שימוש בקידוד. בואו נסתכל על דוגמה נוספת שבה נקבל קלטים מהמשתמש ואז נקודד אותם. נכניס תווים מיוחדים במחרוזת הקלט שהמשתמש יזין.

str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)

פלט:

Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True

ניתן לבדוק את הסקריפט המלא של פייתון ודוגמאות נוספות מה־מאגר הקוד שלנו ב־GitHub.

הפניה: מסמך ה-API של str.encode(), מסמך ה-API של bytes.decode()

Source:
https://www.digitalocean.com/community/tutorials/python-string-encode-decode