为什么我的字符串中有`=`而不是`\ x`?

时间:2015-09-25 09:16:54

标签: ruby email encoding utf-8 escaping

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

  

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

我知道客户端使用了charset iso-8859-1。我也知道iso-8859-1中的self._settings.addOption(Option('app_windowconfig', '')) self._settings.addOption(Option('app_resolution', '640x480')) self._settings.addOption(Option('app_window_size', '')) self._settings.addOption(Option('app_fullscreen', 'false')) self._settings.addOption(Option('app_show_cursor', 'true')) self._settings.addOption(Option('app_rotation', 'normal')) self._settings.addOption(Option('app_panel_fontsize', '10')) self._settings.addOption(Option('app_mouse_enabled', 'true')) self._settings.addOption(Option('multitouch_enabled', 'false')) self._settings.addOption(Option('multitouch_driver', '')) self._settings.addOption(Option('multitouch_tuio_port', '')) self._settings.addOption(Option('log_avg_categories', '')) 是utf-8中的章程"\xE8"

"é"

为什么我找到"\xE8".encode "UTF-8", "ISO-8859-1" # => "è" 而不是"=E8"

1 个答案:

答案 0 :(得分:2)

您需要先从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