使用 ruby 读取 gmail 邮件遇到的问题:
一封邮件的标题为: =?GB2312?B?NS4xMiC98czs0ru149KysrvApw==?=
去掉说明符: NS4xMiC98czs0ru149KysrvApw==
使用 Base64 在线编码、解码 Base64 encode/decode online 解码为: 5.12 今天一点也不困
我想问的是,如何使用 ruby 解码这段字符得到结果,当然其他语言的也行。
ruby -rbase64 -e 'puts Base64.decode64("NS4xMiC98czs0ru149KysrvApw==").force_encoding("gbk").encode(Encoding.default_external)'
>>> from email.header import decode_header >>> for s, c in decode_header("=?GB2312?B?NS4xMiC98czs0ru149KysrvApw==?="): ... print s.decode(c) ... 5.12 今天一点也不困 >>>
#1 楼 @luikore 你那样不科学,header 里其实可以不同编码混合乱来的
#3 楼 @bhuztez 哦,这是标准的话可以用 email header 对应的 parser 啊
require 'mail' Mail::Encodings.value_decode "=?GB2312?B?NS4xMiC98czs0ru149KysrvApw==?="
#4 楼 @luikore 你那不是自带的库吧...
#3 楼 @bhuztez 你好,能问一下 header 里其实可以不同编码混合乱来是什么意思吗?
#6 楼 @youseke
Subject: =?GB2312?B?xxxxxxxxxxx?= =?utf-8?q?xxxxxxxxxxxx?=
#7 楼 @bhuztez 多谢
#5 楼 @bhuztez 是不是自带的没关系吧,mail 这个 gem 装过 rails 都会有的
@luikore @bhuztez @youseke 谢谢各位,最终我用了 Encodings.value_decode
Encodings.value_decode