【问题标题】:Why is there `=` instead of `\x` in my string?为什么我的字符串中有 `=` 而不是 `\x`?
【发布时间】:2015-09-25 09:16:54
【问题描述】:

我正在解析电子邮件正文,我在电子邮件的来源中有这个:

Questo dominio =E8 aperto e operativo da diversi anni, non riesco a = capire l=92esigenza e cosa =E8 cambiato.=20

我知道客户使用了字符集 iso-8859-1。我也知道iso-8859-1中的"\xE8"是utf-8中的章程"é"

"\xE8".encode "UTF-8", "ISO-8859-1" # => "è"

为什么我找到的是"=E8" 而不是"\xE8"

【问题讨论】:

  • 因为这是特定于电子邮件的传输编码。 en.wikipedia.org/wiki/Quoted-printable
  • 您能否进一步解释或给我一些链接? (抱歉,我的应用通知中没有看到链接)

标签: ruby email encoding utf-8 escaping


【解决方案1】:

需要先从quoted-printable编码解码,再从ISO-8859-1编码成UTF-8:

string = "Questo dominio =E8 aperto e operativo da diversi anni, non riesco a = capire l=92esigenza e cosa =E8 cambiato.=20"
puts Mail::Encodings::QuotedPrintable.decode(string).encode('UTF-8', 'ISO-8859-1')
# => Questo dominio è aperto e operativo da diversi anni, non riesco a = capire l=92esigenza e cosa =E8 cambiato.=20

【讨论】:

    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2023-02-21
    • 2011-11-24
    相关资源
    最近更新 更多