In einer idealen Welt - nun gut zumindest IT-Welt - wäre jedes Dokument - egal welcher Art - in nur einer einzigen Art und Weise codiert. Leider sieht die Realität etwas anders aus. Um die vielen Sprachen und vor allem vielen Zeichensätze abzubilden, wurden über die Jahre viele einzelne (oft auf ASCII aufbauende) Encodings entwickelt. Man benötigt daher für die Anzeige von Textdokumenten, neben dem Dokument selbst, auch die Information darüber, wie dieses codiert wurde.
Standardmäßig wird beim Ladevorgang von Textdokumenten in der jadice document platform immer als Standard ISO-8859-1 gesetzt. Um Dokumente mit einem speziellen Encoding zu laden, kann eine Instanz der Klasse com.levigo.jadice.formats.text.TextFormatInfo entsprechend konfiguriert werden. Hierzu folgendes Beispiel:
TextFormatInfo tfi = new TextFormatInfo();
tfi.setEncoding("UTF-8");
Document doc = loader.loadDocument(is, tfi,0);
Um das Beispiel möglichst einfach zu halten, wurde auf die Behandlung von möglichen Fehlern verzichtet.
In diesem Beispiel wird eine Instanz der Klasse TextFormatInfo erzeugt und das Encoding auf UTF-8 gesetzt. Möglich sind viele weitere Encodings, eingeschränkt lediglich durch die Möglichkeiten des Java java.nio.charset.Charset.
Ist der Name eines bestimmten Encodings nicht bekannt oder unklar, ob dieses der Java VM zur Verfügung steht, kann über folgendes Beispiel eine Liste aller möglichen Charset Namen und deren Aliase erzeugt werden:
SortedMap<String, Charset> m = Charset.availableCharsets();
for (Entry<String, Charset> e : m.entrySet()) {
Charset charset = e.getValue();
System.err.println(charset.name());
Set<String> aliases = charset.aliases();
for (String alias : aliases) {
System.err.println("\t"+alias);
}
}
Neben dem Setzen eines Encodings für das Laden von Textdokumenten, bietet die Klasse TextFormatInfo auch eine Reihe weiterer Konfigurationsmöglichkeiten wie beispielsweise das Setzen einer Schrift, mit deren Hilfe die Texte angezeigt werden sollen. Weitere Details und Tipps hierzu werden in einen zukünftigen Artikel einfließen.