ruby Net::IMAP中文的问题
终端是utf-8的邮件标题有中文
这种方式解出来
返回的envelope.from.name => "=?GB2312?B?wfXQ+Q==?="
"\u0018\u001D纷`p}t>"
"\u0018\u001D纷`p}H4>"
类似这样
Encoding.default_external = Encoding::UTF_8
require 'net/imap'
require 'base64'
imap = Net::IMAP.new('imap.gmail.com', 993, true)
imap.login('user', 'pass')
imap.select('INBOX')
imap.search(["UNSEEN"]).each do |message_id|
envelope = imap.fetch(message_id, "ENVELOPE").attr["ENVELOPE"]
name = envelope.from.name
name =~ /.*?\?([^\?]+)\?(.*?)$/;
code = $1
name = Base64.decode64(name)
name.encode!('UTF-8',code)
p name.force_encoding("UTF-8")
end
require 'mail'
Mail::Encodings.value_decode(name)
看这个gem能解决你的问题不:mrgreen:
#coding: utf-8
require 'iconv'
require 'rubygems'
require 'net/imap'
require 'base64'
require 'mail'
imap = Net::IMAP.new('imap.gmail.com', 993, true)
imap.login('lookdata.cn', '606818.com')
imap.select('INBOX')
imap.search(["UNSEEN"]).each do |message_id|
envelope = imap.fetch(message_id, "ENVELOPE").attr["ENVELOPE"]
puts Mail::Encodings.value_decode("#{envelope.from.name}")
end
回复 3# shijiang1130
之前一直不能上网,刚测试了一下, 貌似可以了,万分感谢,另外你的ruby版本是什么? ruby 1.8.7 (2012-02-08 patchlevel 358) 回复 5# shijiang1130
谢谢。
我升级了一下1.9.3
页:
[1]