2015-02-06 97 views
0

我想使用Python3找到关于IMAP的一个笔记,它是IMAP扩展。我尝试搜索包含特殊字符的主题,如下例所示。有没有一种方法可以将搜索字符串编码为IMAP兼容?Python3 IMAP搜索特殊字符

self.connection.search(None, 'ALL', 'SUBJECT "büro"') 

回报

UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 10: ordinal not in range(128) 
+0

我实际上并不相信基础imaplib有可能。 – Max 2015-02-08 02:27:04

回答

2

你应该通过UTF-8编码的字符串作为搜索参数,还需要提及的 “字符集UTF-8” 的搜索查询。

有些事情像这样UID SEARCH CHARSET utf-8“search string”。这里“搜索字符串”应该是utf-8编码的。

+0

'search('UTF-8','SUBJECT',subject.encode())'可能适用于大多数服务器,但它在技术上违反规范,因为它包含不在文字中的8位字符,除非服务器也支持'UTF8 = ACCEPT'功能。 – Max 2015-02-09 19:36:16

+0

如果您使用UID,则需要使用uid('SEARCH','CHARSET UTF-8',subject.encode())) – Max 2015-02-09 19:49:51

+0

是的。事实上,此逻辑仅适用于支持UTF8 = ACCEPT的IMAP服务器,您需要基于支持UTF8 = ACCEPT的IMAP功能构建此逻辑。 – 2015-02-11 05:31:06