Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中解码RFC 2047编码的电子邮件头?_Ruby_Encoding_Tmail - Fatal编程技术网

如何在Ruby中解码RFC 2047编码的电子邮件头?

如何在Ruby中解码RFC 2047编码的电子邮件头?,ruby,encoding,tmail,Ruby,Encoding,Tmail,我有以下标题: From: =?iso-8859-1?Q?Marta_Falc=E3o?= <marta.falcao@example.com.br> 我可以用什么把它变成“Marta Falcão”?感谢他的评论,这让我有了两个选择: 安装并调用Rfc2047。解码(标题) 安装并调用TMail::Unquoter.unquote\u和\u convert\u to(header,'utf-8')或更好的TMail::Address.parse(header).friendly,

我有以下标题:

From: =?iso-8859-1?Q?Marta_Falc=E3o?= <marta.falcao@example.com.br>
我可以用什么把它变成“Marta Falcão”?

感谢他的评论,这让我有了两个选择:

  • 安装并调用
    Rfc2047。解码(标题)
  • 安装并调用
    TMail::Unquoter.unquote\u和\u convert\u to(header,'utf-8')
    或更好的
    TMail::Address.parse(header).friendly
    ,后者去掉了
    部分
  • 使用较新的gem:

    Mail::Encodings.value\u decode(str)
    Mail::Encodings.unquote_和_convert_to(str,to_encoding)
    使用Ruby实现并不难:

    模块Rfc2047
    令牌=/[\041\043-\047\052\053\055\060-\071\101-\132\134\136\137\141-\176]+/.冻结
    编码的\u TEXT=/[\041-\076\100-\176]+/.freeze
    编码的单词=/=\?(?{TOKEN})\?(?[QB])\?(?{ENCODED\U TEXT})\?=/i.freeze
    玛尔塔·法尔科班
    
    更新

    当前具有可能无法正确解码字符串的

    如果这真的困扰您,您可以尝试
    new\u rfc\u 2047

    $ gem install new_rfc_2047
    $ ruby -rrfc_2047 -e 'puts Rfc2047.decode "From: =?iso-8859-1?Q?Marta_Falc=E3o?= <marta.falcao@example.com.br>"'
    From: Marta Falcão <marta.falcao@example.com.br>
    
    $gem安装新的\u rfc\u 2047
    $ruby-rrfc_2047-e'puts rfc247.decode“From:=?iso-8859-1?Q?Marta_Falc=E3o?=”'
    发件人:Marta Falcão
    
    由于mikel/mail的源代码对我来说太复杂了,无法进行修改,因此我为它制作了自己的gem


    Gem源代码在这里:

    头使用RFC 2047中的方案进行编码。也许这对搜索词很有帮助。的确如此!不仅如此,搜索2047的TMail源代码还发现了一种不用添加新依赖项就可以使用的方法。干得好,@RolandIllig:)第一个对我来说很好!gem'rfc247',在我的gem列表中,重新启动,并调用所述方法。。他很有魅力。非常感谢!仅供参考,Mail::Encodings#value#u decode中存在编码错误。如果你遇到这个错误,我的回答会有帮助。
    $ gem install new_rfc_2047
    $ ruby -rrfc_2047 -e 'puts Rfc2047.decode "From: =?iso-8859-1?Q?Marta_Falc=E3o?= <marta.falcao@example.com.br>"'
    From: Marta Falcão <marta.falcao@example.com.br>