Dekodierung von utf-8-String in python 3.6

Habe ich versucht zu entschlüsseln, die utf-8-codierte Zeichenfolge, die ich erfolgreich aber kann nicht herausfinden, wie Sie zu entschlüsseln…
Eigentlich ist es dekodiert sehr gut, aber ich möchte einfach verketten es mit wie:

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

als ich im by-doing-Codierung

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

Wann immer ich versuche, es zu tun in der Weise, die ich will gibt es mir die Fehlermeldung :

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

Kann jemand bitte mir helfen es zu lösen?

  • Dass Incorrect padding Fehler kommt von der base64-Teil des Codes, werfen Sie einen Blick auf stackoverflow.com/questions/4080988/… ich schlage vor, dass Sie Ihre Pause code in einzelnen Funktionsaufrufen anstelle von aufrufen Ketten—, dass machen es leichter zu Debuggen und zu verstehen.
  • Falsche Polsterung verursacht durch die falsche Anzahl Länge in den string. Für base64, Länge sollte teilbar durch 4. Andernfalls müssen Sie pad mit ‚=‘ am Ende zu machen, es ist so lang. Mehr Informationen finden Sie hier



One Reply
  1. 1

    Follow-up zu meinem Kommentar oben.

    Haben Sie zum umkehren der Reihenfolge der operation, wenn Sie decodiert eine Base64 kodierten string:

    >>> 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'

    Nun, dass Sie die codierte Zeichenfolge, die Dekodierung funktioniert in umgekehrter Reihenfolge:

    # 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 

    Weitere details finden Sie in der Dokumentation für b64encode() und b64decode(), sowie die Ausgabe Polsterung Abschnitt für Base64 (erforderlich, um zu gewährleisten, dass eine Base64-codierte Zeichenfolge-Länge ist teilbar durch 4).

    Verwenden Sie Ihre zwei-Liner:

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.