use*_*761 5 python utf-8 imaplib
Python imaplib 有时会返回如下所示的字符串:
=?utf-8?Q?Repertuar_wydarze=C5=84_z_woj._Dolno=C5=9Bl=C4=85skie?=
Run Code Online (Sandbox Code Playgroud)
这个符号的名称是什么?
如何将其解码(或者应该说编码?)为 UTF8?
简而言之:
>>> from email.header import decode_header
>>> msg = decode_header('=?utf-8?Q?Repertuar_wydarze=C5=84_z_woj._Dolno=C5=9Bl=C4=85skie?=')[0][0].decode('utf-8')
>>> msg
'Repertuar wydarze\u0144 z woj. Dolno\u015bl\u0105skie'
Run Code Online (Sandbox Code Playgroud)
我的计算机不显示波兰语字符,但它们应该出现在您的计算机中(区域设置等)
解释:
使用email.header解码器:
>>> from email.header import decode_header
>>> value = decode_header('=?utf-8?Q?Repertuar_wydarze=C5=84_z_woj._Dolno=C5=9Bl=C4=85skie?=')
>>> value
[(b'Repertuar wydarze\xc5\x84 z woj. Dolno\xc5\x9bl\xc4\x85skie', 'utf-8')]
Run Code Online (Sandbox Code Playgroud)
这将返回一个包含已解码标头的列表,通常包含一个包含已解码消息和检测到的编码的元组(有时不止一对)。
>>> msg, encoding = decode_header('=?utf-8?Q?Repertuar_wydarze=C5=84_z_woj._Dolno=C5=9Bl=C4=85skie?=')[0]
>>> msg
b'Repertuar wydarze\xc5\x84 z woj. Dolno\xc5\x9bl\xc4\x85skie'
>>> encoding
'utf-8'
Run Code Online (Sandbox Code Playgroud)
最后,如果你想要msg一个普通的 utf-8 字符串,请使用 bytesdecode方法:
>>> msg = msg.decode('utf-8')
>>> msg
'Repertuar wydarze\u0144 z woj. Dolno\u015bl\u0105skie'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |