【问题标题】:Difference with Q encoding and Quoted Printable?Q 编码和 Quoted Printable 的区别?
【发布时间】:2018-07-09 07:13:11
【问题描述】:

如果我问的是初学者问题,我深表歉意。

请问RFC2047 4.2 The "Q" encodingRFC 2045 6.7 Quoted-Printable Content-Transfer-Encoding有什么区别?

来自 RFC2047:

“Q”编码类似于 RFC 2045 中定义的“Quoted-Printable”内容传输编码。

我正在尝试使用 Ruby 实现解码逻辑。我已阅读下面的答案,并试图了解为什么 Q 编码需要first.gsub('_',' ')

Is there a way to decode q-encoded strings in Ruby?

【问题讨论】:

  • “为什么需要first.gsub('_',' ')——因为在“Q”编码中,' '(空格)可以表示为'_'(下划线)。跨度>
  • 我明白了。 RFC 2047 4.2。 “Q”编码 (2) 。谢谢。

标签: ruby encoding mime


【解决方案1】:

通过再次阅读 RFC2047,我意识到在下划线编码为 =5F 的情况下,以下方法无法正确解码下划线。

decoded = m[3].unpack('M').first.gsub('_',' ')

相反,如RFC2047 4.2 (2)的最后一句所述:

请注意,“_”始终表示十六进制 20,即使 SPACE 字符在使用的字符集中占据不同的代码位置。

我先将文字下划线替换回=20,然后解压。

我的编码如下:

decoded = m[3].gsub('_', '=20').unpack('M').first()

【讨论】:

    猜你喜欢
    • 2018-02-01
    • 2011-01-14
    • 2014-03-01
    • 2011-09-24
    • 1970-01-01
    • 2012-03-05
    • 2019-04-29
    • 2010-11-01
    • 2017-10-05
    相关资源
    最近更新 更多