java.util.Properties und CP1250
-
20-09-2019 - |
Frage
Kann ich java.util.Properties mit kodieren, anders als default?
Lösung
Nicht, wenn Sie
- laufen Java 6 oder höher
- steuern den Code, um die Eigenschaftsdatei laden, und einen Reader verwenden können. Siehe javadoc .
Dies ist ein ziemlich ärgerlichen Fehler in der Spezifikation. Es gibt mehrere Abhilfen, wahrscheinlich die einfachste Wesen automatisch generiert eine Unicode-escaped konformen .properties-Datei aus einer Codierung entsprechendem (CP1250, utf-8, was auch immer) Quelle.
Java Schiffe mit einem Transcoder genannt native2ascii tun dies für Sie:
Es gibt einig im Alter von RFEs zu diesem Thema:
- Geben Sie UTF-8-basierten Eigenschaften Ressourcenbündel - 2004
- eine Last benötigen (Reader) / store (Writer) Schnittstelle für Klasse Properties - 1997
Andere Tipps
Ja, aber dann muss man vorsichtig sein, die load()
und store()
Methoden, die ein Reader
/ Writer
nehmen und die explizit konstruieren, indem ein InputStreamReader/OutputStreamWriter
mit der richtigen Codierung.
Dies kann nicht möglich sein, mit Bibliotheken, die Gebrauchseigenschaften von Dateien implizit.
Edit:. Die oben genannten Methoden nur in Java 1.6 eingeführt wurden beschrieben - für ältere Versionen, sind Sie kein Glück, als dsadinoff schrieb
Wenn Sie Ihre Eigenschaften Datei zur Buildzeit zur Verfügung steht, können Sie es auch in Ihrem Ant-Skript konvertieren die native2ascii Aufgabe mit:
<property name="javac.source.encoding" value="Cp1250"/>
<native2ascii src="${src.dir}" dest="${classes.dir}"
encoding="${javac.source.encoding}"
includes="**/*.properties"/>