Search code examples
pythonencodingdecodingquoted-printable

Encoding issue : decode Quoted-Printable string in Python


In Python, I got a string encoded in Quoted-Printable encoding

mystring="=AC=E9"

This string should be printed as

é

So I want to decode it and encode it in UTF-8, I guess. I understand that something is possible through

import quopri
quopri.decodestring('=A3=E9')

But then, I'm completely lost. How would you do decode/encode this string to get printed properly?


Solution

  • import quopri
    

    Encoding:

    You can encode the character 'é' to Quoted-Printable using quopri.encodestring(). It takes a bytes object and returns the QP encoded bytes object.

    encoded = quopri.encodestring('é'.encode('utf-8'))
    print(encoded)
    

    which prints b'=C3=A9' (but not "=AC=E9" or "=A3=E9" as specified in the question)

    Decoding:

    mystring = '=C3=A9'
    decoded_string = quopri.decodestring(mystring)
    print(decoded_string.decode('utf-8'))
    

    quopri.decodestring() returns a bytes object which is encoded in utf-8(which may be what you want). If you want the character 'é' to be printed, decode utf-8 encoded bytes object using .decode() and pass 'utf-8' as argument.