2017-08-11 109 views
0

我正在接收来自django应用程序转发电子邮件主题的sns通知。 Message.content中的请求主体json包含奇怪的utf-8格式(即:“= C3 = A8”表示“è”),还有一些“=”在某处。AWS sns电子邮件通知接收utf-8字符,如= C3 = A8

我想之前解析它加载:

body = request.body.decode('utf-8') 

body_unicode = unicode(body) 
js = json.loads(body_unicode.replace('\n', '')) 

但我不能。子串“= C3 = A8”仍然在body_unicode

+0

'decode'翻译字节unicode字符串。你为什么'unicode'解码字符串的结果?什么= C3 = A8? 'è'的url转义码是'%C3%A8'。 – stamaimer

回答

0

这些是报价可打印的字符,它们用于电子邮件。你是在寻找可以转换为在python正常的字符串什么如下图所示

Python 3.6.1 (default, Apr 4 2017, 09:40:21) 
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import quopri 
>>> data = quopri.decodestring("=C3=A8") 
>>> data 
b'\xc3\xa8' 
>>> data.decode("utf-8") 
'è' 
>>> 

欲了解更多详情,请参阅How to understand the equal sign '=' symbol in IMAP email text?

+0

谢谢塔伦,这正是我需要的。 –