ruby 拼音+ Imap:搜索带有特殊字符的主题不起作用

dwbf0jvd  于 2022-11-29  发布在  Ruby
关注(0)|答案(1)|浏览(117)

使用Ruby + IMAP并尝试搜索包含特殊字符的主题时:

imap.uid_search(['SUBJECT', subject, 'NOT', 'SEEN'])

如果主题为“Olá",则将失败,并显示:

Encoding::CompatibilityError: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)
from /Users/fernando/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/net/imap.rb:1266:in `==='

指定uid_search的第二个参数(字符集)也不起作用。
没有特殊字符的主题工作正常。有什么方法使这个工作吗?

aamkag61

aamkag611#

这会重现问题(使用net/imap使用的相同regexp):

# encoding: ascii-8bit
a = /[\x80-\xff\r\n]/n
a =~ "olá".force_encoding('utf-8') # incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string) (Encoding::CompatibilityError)

两种可能性:
1.将# encoding: ascii-8bit添加到脚本的顶部
1.强制字符串的编码为ascii-8bit
搜索结果(['主题',主题.强制编码('ascii-8位'),'NOT','SEEN'])

相关问题