有没有办法在Ruby中解码q编码的字符串?

pup*_*eno 4 ruby email decoding

我正在使用邮件,名称和主题有时会进行q编码,如下所示:

=?UTF-8?Q?J=2E_Pablo_Fern=C3=A1ndez?=
Run Code Online (Sandbox Code Playgroud)

有没有办法在Ruby中解码它们?似乎TMail应该照顾它,但它没有这样做.

ank*_*mal 6

我用它来解析电子邮件主题:

您可以尝试以下方法:

str = "=?UTF-8?Q?J=2E_Pablo_Fern=C3=A1ndez?="
if m = /=\?([A-Za-z0-9\-]+)\?(B|Q)\?([!->@-~]+)\?=/i.match(str)
        case m[2]
        when "B" # Base64 encoded
          decoded = Base64.decode64(m[3])
        when "Q" # Q encoded
          decoded = m[3].unpack("M").first.gsub('_',' ')
        else
          p "Could not find keyword!!!"
        end
        Iconv.conv('utf-8',m[1],decoded) # to convert to utf-8
end
Run Code Online (Sandbox Code Playgroud)