0

取得したメッセージ内の Unicode テキストを表示するにはどうすればよいですか?

$require 'net/pop'
mail_server = Net::POP3.new('mail.yahoo.ru')
mail_server.start('login','pass')
mail_server.mails.each do |m|
   puts m.pop if /Superjob/.match(m.header)
end

キリル文字の代わりに「??????..」と表示されます。

4

2 に答える 2

1

私はネット/ポップに完全に精通しているわけではありませんが、おそらくIconvを使用して、次のようにutf-8に変換したいと思うでしょう:

require 'net/pop'
require 'iconv'

mail_server = Net::POP3.new('mail.yahoo.ru')
mail_server.start('login','pass')
mail_server.mails.each do |m|
 m = Iconv.conv('UTF8', 'CP1251', m)
 #or m.header = Iconv.conv('UTF8', 'CP1251', m.header) ??
 puts m.pop if /Superjob/.match(m.header)
end
于 2012-05-06T19:27:18.683 に答える
1

mail gemを使用することをお勧めします。これは、マルチパート メッセージ、すべてのフィールドの自動文字セット変換などをサポートしています。

于 2012-05-06T20:32:31.203 に答える