From: Kengo Matsuyama Date: 2009-02-22T04:18:04+09:00 Subject: [ruby-dev:38063] [Bug #1191] Net::IMAP.encode_utf7 bug? Bug #1191: Net::IMAP.encode_utf7 bug? http://redmine.ruby-lang.org/issues/show/1191 起票者: Kengo Matsuyama ステータス: Open, 優先度: Normal ruby -v: ruby 1.9.2dev (2009-02-22 trunk 22492) [i686-linux] Net::IMAP.encode_utf7 による modified UTF-7 への変換が正しくないと思います。 > Net::IMAP.encode_utf7('あ&') => "&MEIAJg-" と変換されますが、RFC 3501 section 5.1.3 に従うなら "&MEI-&-" に 変換されるのが正しいのではないでしょうか。 modified UTF-7 の他の実装があまり見付からなかったのですが、 たとえば PHP では mb_convert_encoding("あ&", "utf7-imap", "utf8") は "&MEI-&-" になりました。(Perl の Net::IMAP、Python の imaplib では未実装?) 以下のパッチで修正できます。 Index: lib/net/imap.rb =================================================================== --- lib/net/imap.rb (revision 22492) +++ lib/net/imap.rb (working copy) @@ -863,7 +863,7 @@ # Encode a string from UTF-8 format to modified UTF-7. def self.encode_utf7(s) - return s.gsub(/(&)|([^\x20-\x25\x27-\x7e]+)/u) { + return s.gsub(/(&)|([^\x20-\x7e]+)/u) { if $1 "&-" else ---------------------------------------- http://redmine.ruby-lang.org