0

使用 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 的第二个参数,即字符集,也不起作用。

没有特殊字符的主题可以正常工作。有没有办法使这项工作?

谢谢。

4

1 回答 1

2

这复制了问题(使用相同的正则表达式net/imap):

# 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到脚本的顶部
  2. 强制字符串的编码为ascii-8bit

    imap.uid_search(['SUBJECT', subject.force_encoding('ascii-8bit'), 'NOT', 'SEEN'])

于 2013-03-19T13:58:27.463 回答