编码问题:解码 Python 中的 Quoted-Printable 字符串
Encoding issue : decode Quoted-Printable string in Python
在Python中,我得到了一个编码为Quoted-Printable encoding
的字符串
mystring="=AC=E9"
此字符串应打印为
é
所以我想解码它并用 UTF-8 编码,我想。我知道通过
有些事情是可能的
import quopri
quopri.decodestring('=A3=E9')
但是,我完全迷路了。您如何 decode/encode 正确打印此字符串?
试试这个。
import quopri
mystring="=AC=E9"
decoded_string=quopri.decodestring(mystring)
print(decoded_string.decode('windows-1251'))
好的伙计们,我不知道为什么,但这个功能似乎有效:
from email.parser import Parser
def decode_email(msg_str):
p = Parser()
message = p.parsestr(msg_str)
decoded_message = ''
for part in message.walk():
charset = part.get_content_charset()
if part.get_content_type() == 'text/plain':
part_str = part.get_payload(decode=1)
decoded_message += part_str.decode(charset)
return decoded_message
import quopri
编码:
您可以使用 quopri.encodestring() 将字符 'é' 编码为 Quoted-Printable。它需要一个字节对象和 returns QP 编码字节对象。
encoded = quopri.encodestring('é'.encode('utf-8'))
print(encoded)
打印 b'=C3=A9'(但不是问题中指定的“=AC=E9”或“=A3=E9”)
解码:
mystring = '=C3=A9'
decoded_string = quopri.decodestring(mystring)
print(decoded_string.decode('utf-8'))
quopri.decodestring() returns 一个用 utf-8 编码的 bytes 对象(这可能是你想要的)。如果要打印字符 'é',请使用 .decode() 解码 utf-8 编码字节对象并将 'utf-8' 作为参数传递。
在Python中,我得到了一个编码为Quoted-Printable encoding
的字符串mystring="=AC=E9"
此字符串应打印为
é
所以我想解码它并用 UTF-8 编码,我想。我知道通过
有些事情是可能的import quopri
quopri.decodestring('=A3=E9')
但是,我完全迷路了。您如何 decode/encode 正确打印此字符串?
试试这个。
import quopri
mystring="=AC=E9"
decoded_string=quopri.decodestring(mystring)
print(decoded_string.decode('windows-1251'))
好的伙计们,我不知道为什么,但这个功能似乎有效:
from email.parser import Parser
def decode_email(msg_str):
p = Parser()
message = p.parsestr(msg_str)
decoded_message = ''
for part in message.walk():
charset = part.get_content_charset()
if part.get_content_type() == 'text/plain':
part_str = part.get_payload(decode=1)
decoded_message += part_str.decode(charset)
return decoded_message
import quopri
编码:
您可以使用 quopri.encodestring() 将字符 'é' 编码为 Quoted-Printable。它需要一个字节对象和 returns QP 编码字节对象。
encoded = quopri.encodestring('é'.encode('utf-8'))
print(encoded)
打印 b'=C3=A9'(但不是问题中指定的“=AC=E9”或“=A3=E9”)
解码:
mystring = '=C3=A9'
decoded_string = quopri.decodestring(mystring)
print(decoded_string.decode('utf-8'))
quopri.decodestring() returns 一个用 utf-8 编码的 bytes 对象(这可能是你想要的)。如果要打印字符 'é',请使用 .decode() 解码 utf-8 编码字节对象并将 'utf-8' 作为参数传递。