用'\x'替换=然后用python解码

2024-09-27 21:23:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python模块和接收到的字符串获取电子邮件的主题

'=D8=B3=D9=84=D8=A7=D9=85_=DA=A9=D8=AC=D8=A7=D8=A6=DB=8C?=' 

我知道这个字符串是用“utf-8”编码的。Python有一个对字符串调用的方法来解码这些字符串。但是要使用方法,我需要用\x字符串替换=符号。通过手动交换,然后打印解码后的字符串,我得到的字符串正是我想要的。问题是我怎样才能自动交换?答案似乎比简单地在诸如replace function之类的字符串上使用函数更难。

下面我带来了手动操作后使用的代码?

r='\xD8\xB3\xD9\x84\xD8\xA7\xD9\x85_\xDA\xA9\xD8\xAC\xD8\xA7\xD8\xA6\xDB\x8C'
print r.decode('utf-8')

我很感激任何可行的主意。


Tags: 模块方法字符串主题电子邮件手动解码utf
2条回答

只需从引用的可打印文件中解码,就可以得到由testring编码的utf8:

In [35]: s = '=D8=B3=D9=84=D8=A7=D9=85_=DA=A9=D8=AC=D8=A7=D8=A6=DB=8C?='
In [36]: s.decode('quoted-printable')
Out[36]: '\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85_\xda\xa9\xd8\xac\xd8\xa7\xd8\xa6\xdb\x8c?'

然后,如果需要,从utf-8到unicode:

In [37]: s.decode('quoted-printable').decode('utf8')
Out[37]: u'\u0633\u0644\u0627\u0645_\u06a9\u062c\u0627\u0626\u06cc?'

In [39]: print s.decode('quoted-printable')
سلام_کجائی?

这种编码称为引用可打印编码。有一个Python模块用于执行编码和解码。

你说得对,它只是一个纯引用的二进制字符串,所以你需要应用UTF-8解码之后。(当然,假设字符串是UTF-8格式的。但这看起来是对的,尽管我不懂语言。)

import quopri

print quopri.decodestring( "'=D8=B3=D9=84=D8=A7=D9=85_=DA=A9=D8=AC=D8=A7=D8=A6=DB=8C?='" ).decode( "utf-8" )

相关问题 更多 >

    热门问题