2015-09-25 86 views
0

我解析電子郵件正文文本,我有這樣的電子郵件的來源:爲什麼在我的字符串中有`=`而不是` x`?

Questo DOMINIO = E8 Aperto公司Ëoperativo達diversi安妮,非列斯科A = capire L = 92esigenzaËCOSA = E8 cambiato。= 20

我知道客戶端使用了字符集iso-8859-1。我也知道,"\xE8"在ISO 8859是包機"é"在UTF-8:

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

爲什麼我覺得"=E8",而不是"\xE8"

+2

因爲這是專門針對電子郵件的傳輸編碼。 https://en.wikipedia.org/wiki/Quoted-printable – deceze

+0

你可以進一步解釋還是給我一些鏈接? (對不起,我沒有看到通知我的應用程序的鏈接) – ciaoben

回答

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 
相關問題