簡體   English   中英

使用python 3.6解碼utf-8字符串

[英]Decoding utf-8 String using python 3.6

我嘗試對成功編碼的utf-8字符串進行解碼,但無法弄清楚如何對其進行解碼...實際上,它的解碼效果非常好,但我只想將其與以下內容連接:

b = base64.b64decode(a).decode("utf-8", "ignore")
print('Decoding:'+b)

就像我通過編碼所做的一樣

a = str(base64.b64encode(bytes('hasni zinda ha u are my man boy yes u are ', "utf-8")))
print('Encoding :'+a)

每當我嘗試以我想要的方式進行操作時,都會出現以下錯誤:

File "C:/Users/…/python/first.py", line 8, in <module>
  b = base64.b64decode(a).decode("utf-8", "ignore")
File "C:\Users\…\AppData\Local\Programs\Python\Python36-32\lib\base64.py", line 87, in b64decode
  return binascii.a2b_base64(s) binascii.Error: Incorrect padding

誰能幫我解決這個問題?

繼續上述我的評論

解碼Base64編碼的字符串時,必須反轉操作順序:

>>> s = "hasni zinda ha u are my man boy yes u are "
# Encode the Python str into bytes.
>>> b = s.encode("utf-8")
# Base64 encode the bytes.
>>> s_b64 = base64.b64encode(b)
>>> print("Encoding: " + str(s_b64))
Encoding: b'aGFzbmkgemluZGEgaGEgdSBhcmUgbXkgbWFuIGJveSB5ZXMgdSBhcmUg'

現在您有了編碼的字符串,解碼的順序相反:

# Base64 decode the encoded string into bytes.
>>> b = base64.b64decode(s_b64)
# Decode the bytes into str.
>>> s = b.decode("utf-8")
print("Decoding: " + s)
Decoding: hasni zinda ha u are my man boy yes u are 

有關更多詳細信息,請參見b64encode()b64decode()的文檔,以及Base64的“ 輸出填充”部分(需要確保將Base64編碼的字符串的長度可除以4)。

要使用兩條線:

>>> a = base64.b64encode(bytes("hasni zinda ha u are my man boy yes u are ", "utf-8"))
>>> print("Encoding:", a)
Encoding: b'aGFzbmkgemluZGEgaGEgdSBhcmUgbXkgbWFuIGJveSB5ZXMgdSBhcmUg'
>>> b = base64.b64decode(a).decode("utf-8")
>>> print("Decoding:", b)
Decoding: hasni zinda ha u are my man boy yes u are 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM