2009-06-24 3 views
1

Wir implementieren i18n unter Verwendung von JSTL und stellten ein Problem fest, dass die in der Datei .properties definierten Ressourcentexte mit nicht ISO 8859 Zeichen (z. B. inidische Sprachen) nicht per Tag gerendert werden können.Ressourcendateien für Sprachen mit anderen Zeichen als ISO 8859

Nach dem Tauchen durch den Code von Tag und BundleHelper-Klasse fanden wir schließlich, dass es intern ResourceBundle.getBundle-Methode verwendet, die wiederum PropertyResourceBundle zum Laden der Datei .properties als Ressourcenbündel verwendet.

Es intern verwendet java.util.Properties # load (InputStream) -Methode, die nicht das Lesen von nicht ISO 8859 Zeichen unterstützt und die einzige Arbeit ist um solche Zeichen in/u Hex Hex Hex Hex-Format, das ist darzustellen ziemlich unpraktisch, falls die gesamte Datei .properties für die Sprache Hindi ist!

Gibt es irgendwelche Arbeit dafür. Ich habe versucht, das XML-Format in der Datei .properties zu verwenden, aber es wurde von PropertyResourceBundle nicht erkannt!

Umwelt Details sind: JDK 1.5, Weblogic 9.2

+0

Haben Sie UTF-8 versucht? –

Antwort

1

Haben Sie absolut haben JDK 1.5 zu benutzen? Wenn Sie bis zu 1,6 verschieben könnten, könnten Sie die load(Reader) Überladung verwenden, mit der Sie die Dateien in anderen Kodierungen (z. B. UTF-8) speichern könnten. Ich bin mir nicht sicher, wie das zu PropertyResourceBundle passen würde, zugegebenermaßen.

Vergessen Sie nicht, dass sogar mit ISO-8859-1-Dateien arbeiten, müssen Sie dieses Format nicht verwenden bearbeiten die Datei. Sie können native2ascii verwenden, um eine Datei aus einer anderen Kodierung zu konvertieren. Bewahren Sie die Eigenschaftendateien "source" als UTF-8 auf und führen Sie dann native2ascii als Teil Ihres Builds aus. Zum Beispiel:

native2ascii -encoding UTF-8 Foo.properties.utf8 Foo.properties 
0

Schreiben Sie Ihre Dateien in welcher Codierung Sie mögen und sie durch das native2ascii Tool ausführen als Teil des Build-oder Bereitstellungsprozesses (die genau zu diesem Zweck mit dem JDK kommt).