Wie UTF-8 in Ressourceneigenschaften mit ResourceBundle verwendet wird
Brauche ich, um die Verwendung von UTF-8 in meinem Ressource-Eigenschaften in der Java -ResourceBundle
. Wenn ich geben Sie den text direkt in der Datei mit den Eigenschaften, zeigt es als mojibake.
Meine app läuft auf der Google App Engine.
Kann jemand mir ein Beispiel? Ich kann nicht diese Arbeit.
InformationsquelleAutor der Frage nacho | 2011-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
ResourceBundle#getBundle()
verwendet unter der DeckePropertyResourceBundle
wenn ein.properties
- Datei angegeben ist. Diese wiederum nutzt standardmäßigProperties#load(InputStream)
laden diese properties-Dateien. Als pro in der javadocSie sind standardmäßig Lesen als ISO-8859-1.So, würden Sie brauchen, um speichern Sie Sie als ISO-8859-1. Wenn Sie alle Zeichen jenseits von ISO-8859-1-Bereich und können Sie nicht verwenden
\uXXXX
aus Spitze von Kopf und du bist so gezwungen, speichern Sie die Datei als UTF-8, dann würden Sie brauchen, um die Nutzung native2ascii tool zum konvertieren von UTF-8 gespeichert properties-Datei zu einer ISO-8859-1 gespeichert properties-Datei, worin alle aufgedeckt-Zeichen konvertiert zu\uXXXX
- format. Das folgende Beispiel konvertiert einen UTF-8-codierte Datei Eigenschaftentext_utf8.properties
um einen gültigen ISO-8859-1 kodierte Datei Eigenschaftentext.properties
.Wenn über eine vernünftige IDE wie Eclipse ist dies bereits automatisch geschehen, wenn Sie erstellen ein
.properties
- Datei in ein Java-basiertes Projekt und die Nutzung des Eclipse-eigenen editor. Eclipse wird transparent konvertieren Sie die Zeichen jenseits von ISO-8859-1-Bereich zu\uXXXX
- format. Siehe auch screenshots unten (beachten Sie die "Eigenschaften" und "Quelle" tabs unten klicken für groß):Alternativ können Sie auch eine benutzerdefinierte
ResourceBundle.Control
Umsetzung, wobei Sie explizit Lesen Sie die properties-Dateien als UTF-8 mitInputStreamReader
so dass Sie können nur speichern Sie Sie als UTF-8 ohne die Notwendigkeit zu ärger mitnative2ascii
. Hier ist ein kickoff-Beispiel:Diese können wie folgt verwendet werden:
Siehe auch:
InformationsquelleAutor der Antwort BalusC
Gegeben, dass Sie eine Instanz haben, die von ResourceBundle und Sie können get String:
Löste ich meine japanischen display-problem von:
InformationsquelleAutor der Antwort Rod
schau mal hier : http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#load(java.io.Reader)
die Eigenschaften annehmen, die Reader - Objekt als Argumente, die Sie erstellen können, aus einem InputStream.
in der Zeit erstellen, können Sie die Kodierung angeben, die der Leser:
dann diese Leser an die load-Methode :
BTW: Holen Sie sich den stream aus .Eigenschaften Datei :
hoffe das kann dir helfen !
InformationsquelleAutor der Antwort Chinaxing
Erstellen wir ein Ressourcen.utf8-Datei, enthält die Ressourcen, die in UTF-8 und haben in der Regel das folgende:
InformationsquelleAutor der Antwort andykellr
ResourceBundle.Control
mit UTF-8 und neue String-Methoden funktionieren nicht, wenn die properties-Datei verwendet charset cp1251, zum Beispiel.So, ich empfehlen die Verwendung einer gemeinsamen Methode: schreiben in unicode Symbole. Für diese:
IDEE -- hat einen besonderen "Transparente native-to-ASCII-Konvertierung" option (Einstellungen > Datei-Verschlüsselung).
Eclipse - hat ein plugin "Eigenschaften-Editor". Es kann als separate Anwendung.
InformationsquelleAutor der Antwort Kinjeiro
InformationsquelleAutor der Antwort marcolopes
Achtung: java-property-Dateien codiert werden sollten, die in ISO 8859-1!
@siehe Eigenschaften der Java-Doc
Wenn Sie noch wirklich wollen, dies zu tun: haben Sie einen Blick auf:
Java-properties-UTF-8 encoding in Eclipse - es gibt einige code-Beispiele
InformationsquelleAutor der Antwort Ralph
Wurde dieses problem endlich behoben wurde, in Java 9:
https://docs.oracle.com/javase/9/intl/internationalization-enhancements-jdk-9
Standard-Kodierung für properties-Dateien ist jetzt UTF-8.
InformationsquelleAutor der Antwort stenix
http://sourceforge.net/projects/eclipse-rbe/
als die bereits genannten property-Dateien codiert werden sollten, die in ISO 8859-1
Können Sie mithilfe des oben genannten plugins für die eclipse IDE, um die Unicode-Konvertierung für Sie.
InformationsquelleAutor der Antwort fmucar
Hier ist ein Java-7-Lösung, die verwendet Guave die hervorragende Unterstützung von Bibliothek und try-with-resources-Konstrukt. Es liest und schreibt die properties-Dateien mit UTF-8 für die einfachste Allgemeine Erfahrung.
Zu Lesen, eine Eigenschaften-Datei als UTF-8:
Schreiben Sie eine Eigenschaften-Datei als UTF-8:
InformationsquelleAutor der Antwort Gary Rowe
Als einer schlug, ich ging durch die Implementierung von resource-bundle.. aber das hat nicht geholfen.. da das bundle war immer aufgerufen, unter Gebietsschema "en_US" ... ich habe versucht, auf meine Standard-Gebietsschema auf eine andere Sprache und noch meine Implementierung des resource-bundle-control aufgerufen wurde, die mit de_de... ich versuchte, um log-Nachrichten und machen Sie einen Schritt durch Debuggen und sehen, wenn Sie einen anderen lokalen Anruf wurde gemacht, nachdem ich Gebietsschema ändern, die zur Laufzeit durch xhtml und JSF ruft... nicht passiert... dann habe ich versucht zu tun, ein system default auf utf-8 zum Lesen von Dateien von meinem server (tomcat server).. aber das verursacht pronlem wie alle meine class-libraries nicht kompiliert unter utf8 und tomcat begann zu Lesen, dann im utf8-format und der server nicht ordnungsgemäß ausgeführt wurde... dann landete ich bei der Implementierung einer Methode in der java-controller genannt werden, die aus xhtml-Dateien.. in dieser Methode habe ich die folgenden:
War ich besonders nervös, da dies zu verlangsamen die Leistung meiner Anwendung... allerdings nach der Umsetzung dieser, es sieht so aus, als wenn mein Antrag jetzt schneller.. ich denke, es ist, weil, ich bin jetzt direkt den Zugriff auf die Eigenschaften, anstatt zuzulassen, dass JSF analysieren, seinen Weg in den Zugriff auf Eigenschaften..., die ich speziell pass Boolean-argument in diesem Aufruf, weil ich weiß, dass einige der Eigenschaften nicht übersetzt werden und müssen nicht im utf8-format...
Nun habe ich mein gespeichertes properties-Datei im UTF8-format und es ist in Ordnung, da jeder Benutzer in meiner Anwendung hat ein referent locale-Einstellung.
InformationsquelleAutor der Antwort Masoud
InformationsquelleAutor der Antwort Вассесуарий Пупочкин
Für was es Wert ist, mein Problem war, dass die Dateien selbst waren in der falschen Codierung. Mit iconv für mich gearbeitet
InformationsquelleAutor der Antwort Zack Bartel
Ich versucht, den Ansatz zur Verfügung gestellt von der Stange, sondern unter Berücksichtigung BalusC betreffen etwa nicht die Wiederholung der gleichen arbeiten, um in allen die Anwendung und kam mit dieser Klasse:
Die Art und Weise zu verwenden, diese würden sehr ähnlich sein, als die reguläre ResourceBundle Verwendung:
Oder Sie können mit der Alternative Konstruktor verwendet standardmäßig UTF-8:
InformationsquelleAutor der Antwort carlossierra
Öffnen Sie die Einstellungen /Preferences-dialog (Strg + Alt + S), klicken Sie dann auf Editor und Datei-Codierungen.
Dann, auf dem Boden, Sie fing die Standard-Kodierung für properties-Dateien. Wählen Sie Ihre encoding-Typ.
Alternativ können Sie die Verwendung der unicode-Symbole anstelle von text in Ihrem Ressource-bundle (zum Beispiel
"ів"
gleich\u0456\u0432
)InformationsquelleAutor der Antwort Юра Чорнота