Python IMAPClient / imaplib搜索unicode问题 [英] Python IMAPClient/imaplib search unicode issue
本文介绍了Python IMAPClient / imaplib搜索unicode问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用IMAPClient库,但在搜索时收到 UnicodeEncodeError
。下面是一个片段和堆栈跟踪:
imap_client = imapclient.IMAPClient('imap.gmail.com',use_uid = True ,ssl = True)
imap_client.oauth2_login('john@example.com','xxx')
subject = u'Test \\\œ\\\∑\\\´\\\å\\\ß\\ \\ u2202'
from_email = u'john@example.com'
to_emails = [u'foo@example.com']
cc_emails = []
approx_date_sent = '05 - 2013年8月'
imap_client.select_folder(r'\发送')
search_criteria = [
u'FROM%s'%from_email,
u'SUBJECT %s'.encode('utf-8')%subject,
u'TO%s'%';'。join(to_emails)or'',
u'CC%s'%' ;'。join(cc_emails)or'',
u'SENTON%s'%approx_date_sent
]
msg_ids = imap_client.search(search_criteria,charset ='utf-8')
'ascii'编解码器不能编码位置77-82中的字符:序号(128)
Traceback(最近一次调用的最后一次):
文件/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py ,第570行,发送
返回方法(* args,** kwargs)
文件/base/data/home/apps/s~app/dev.369284735686497536/imapapi.py,行269,后
to_emails = to_emails,cc_emails = cc_emails,approx_date_sent = approx_date_sent
文件/base/data/home/apps/s~app/dev.369284735686497536/utils/imap.py,行123,在search_message
msg_ids = imap_client.search(search_criteria,charset ='utf-8')
文件/base/data/home/apps/s~app/dev.369284735686497536/imapclient/imapclient .py,第569行,搜索
typ,data = self._imap.search(charset,* criteria)
文件/ base / data / home / runtimes / python27 / python27_dist / lib / python2 / base / data / home / runtimes中搜索.7 / imaplib.py,第625行,搜索
typ,dat = self._simple_command(名称,'CHARSET',charset,* criteria)
/ python27 /蟒蛇27_dist / lib / python2.7 / imaplib.py,第1070行,在_simple_command
中返回self._command_complete(name,self._command(name,* args))
文件/ base / data / home / runtimes / python27 / python27_dist / lib / python2.7 / imaplib.py,第857行,在_command
self.send('%s%s'%(data,CRLF))
File /base/data/home/runtimes/python27/python27_dist/lib/python2.7/imaplib.py,第1178行,发送
sent = self.sslobj.write(data)
文件 /base/data/home/runtimes/python27/python27_dist/lib/python2.7/ssl.py,第232行,写入
返回self._sslobj.write(data)
UnicodeEncodeError:'ascii '编解码器不能编码77-82位置的字符:序号不在范围内(128)
它似乎问题发生在 ssl.py
? oauth2_login
。
ssl = True >解决方案
尝试一下
'ascii' codec can't encode characters in position 77-82: ordinal not in range(128)
Traceback (most recent call last):
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "/base/data/home/apps/s~app/dev.369284735686497536/imapapi.py", line 269, in post
to_emails=to_emails, cc_emails=cc_emails, approx_date_sent=approx_date_sent
File "/base/data/home/apps/s~app/dev.369284735686497536/utils/imap.py", line 123, in search_message
msg_ids = imap_client.search(search_criteria, charset='utf-8')
File "/base/data/home/apps/s~app/dev.369284735686497536/imapclient/imapclient.py", line 569, in search
typ, data = self._imap.search(charset, *criteria)
File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/imaplib.py", line 625, in search
typ, dat = self._simple_command(name, 'CHARSET', charset, *criteria)
File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/imaplib.py", line 1070, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/imaplib.py", line 857, in _command
self.send('%s%s' % (data, CRLF))
File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/imaplib.py", line 1178, in send
sent = self.sslobj.write(data)
File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/ssl.py", line 232, in write
return self._sslobj.write(data)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 77-82: ordinal not in range(128)
It seems the issue happens in ssl.py
? And ssl=True
is needed for oauth2_login
.
解决方案
Try this out
Python IMAP search using a subject encoded with iso-8859-1
It covers utf-8 as well as iso-8859-1
这篇关于Python IMAPClient / imaplib搜索unicode问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文