#

Encoding Raterei

Wenn man Text-Dateien / Streams in Java lesen will, sollte man wissen, welches Encoding der Text benutzt. Zwar ist dies für Dateien auf ein und demselben Rechner unproblematisch, da jedes System ein Default Encoding benutzt, aber wenn man zwischen verschiedenen Systemen Texte tauscht, so kann es passieren, dass plötzlich Sonderzeichen kryptisch erscheinen.

Die Java API besitzt per se keine Funktionalität, um sich das Encoding eines Textes ermitteln zu lassen, zumal dies scheinbar auch nicht immer so einfach zu sein scheint. Im Gegensatz zu binären Dateiformaten besitzen Textdateien üblicherweise keinen Header. (Ausnahmen bilden da XML und HTML Dokumente, welche das encoding- / charset-Attribut im Text enthalten, aber auch nicht immer.)

Hilfreich ist da eine kleine Klasse mit dem Namen SmartEncodingInputStream aus dem Paket „Guess Encoding“ von Guillaume Laforge, welche anhand der ersten Bytes aus dem Stream das Encoding „rät“.
Ja, rät. Denn es kann nicht alle hunderte Encodings zu 100% erkennen, hilft jedoch bei den am meisten verbreiteten.

Tags:, , ,

Leave a Reply »»

Note: All comments are manually approved to avoid spam. So if your comment doesn't appear immediately, that's ok. Have patience, it can take some days until I have the time to approve my comments.