2016-04-17 9 views
1

Ich lese gerade Mails aus der Datei und verarbeite einige Header-Informationen. Nicht-ASCII-Zeichen sind nach RFC2047 in quoted-printable oder Base64 kodiert, so dass die Dateien keine Nicht-ASCII-Zeichen enthalten. Wenn die Datei in UTF-8, Win-1252 oder einer der ISO-8859- * Zeichenkodierungen kodiert ist, werde ich keine Probleme haben, weil ASCII an der gleichen Stelle in all diesen Zeichensätzen eingebettet ist (also 0x41 ist eine A in all diesen Zeichensets).Zeichenkodierung Kompatibilität mit ASCII

Aber was ist, wenn die Datei mit einer Codierung codiert wird, die ASCII auf diese Weise nicht einbetten? Gibt es solche Kodierungen? Und wenn ja, gibt es überhaupt eine zuverlässige Möglichkeit, sie zu erkennen?

Antwort

1

Es gibt eine Charset-detector von Mozilla basierend auf this sehr interessanten Artikel. Es kann sehr viele verschiedene Codierungen erkennen. Es gibt auch einen Port zu C#, der auf GitHub verfügbar ist, den ich vorher verwendete. Es erwies sich als ziemlich zuverlässig. Aber wenn der Text nur ASCII-Zeichen enthält, kann er natürlich nicht zwischen den verschiedenen Kodierungen unterscheiden, die ASCII auf die gleiche Weise codieren. Aber alle Codierungen, die ASCII auf eine andere Weise codieren, sollten mit dieser Bibliothek korrekt erkannt werden.