Quanto è pertinente UTF-7 quando si tratta di analizzare le e-mail?

7

Recentemente ho implementato e-mail in arrivo per un'applicazione e ragazzo, ho aperto le porte dell'inferno? Da quel giorno in poi arriva un'e-mail che fa fallire l'app in un modo diverso.

Una di queste cose sono le e-mail codificate come UTF-7. La maggior parte delle e-mail sono ASCII, alcune delle codifiche latine o, per fortuna, UTF-8.

I messaggi di errore di Hotmail (come l'indirizzo di posta elettronica inesistente o la quota superata) sembrano venire come UTF-7. Sfortunatamente, UTF-7 non è una codifica che Ruby comprende:

> "hello world".encode("utf-8", "utf-7")
Encoding::ConverterNotFoundError: code converter not found (UTF-7 to UTF-8)

> Encoding::UTF_7
 => #<Encoding:UTF-7 (dummy)> 

La mia applicazione non si blocca, in realtà gestisce bene l'e-mail, ma mi invia una notifica sul potenziale errore.

Ho trascorso un po 'di tempo su google e non riesco a trovare nessuno che abbia implementato la conversione, almeno non come un convertitore di Ruby 1.9.3 Encoding ::.

Quindi, la mia domanda è, dato che non ho mai ricevuto un'e-mail con contenuti reali, da una persona reale, in UTF-7, quanto è rilevante quella codifica? posso ignorarlo tranquillamente?

    
posta pupeno 06.09.2012 - 18:25
fonte

2 risposte

10

La caratteristica solo di UTF-7 (su UTF-8 per esempio) è che è una codifica a 7 bit, proprio come la buona vecchia ASCII. Ciò significa che funziona su un sistema che è non pulito a 8 bit .

L'unico sistema su larga scala in cui oggi è importante anche i server di posta (non chiedermi perché non hanno risolto il problema 10-20 anni fa, la maggior parte dei server lo ha fatto, ma alcuni ancora non lo facevano).

Quindi: UTF-7 solo ha rilevanza nei sistemi di posta elettronica. Ovunque altro UTF-8 è la scelta migliore.

    
risposta data 06.09.2012 - 19:09
fonte
7

Grazie al commento di Charles Salvia, ho trovato un metodo nel modulo IMAP che mi ha aiutato:

require "net/imap"
Net::IMAP.decode_utf7(mail_body)
    
risposta data 06.09.2012 - 19:36
fonte

Leggi altre domande sui tag