Lesen Sie das Ressourcenpaket als UTF-8. Die Methode getString () scheint die Codierung in ISO-8859 zu ändern

Ich habe die ehrenvolle Aufgabe, die Kodierung unseres gesamten Arbeitsbereichs, unserer Projekte und Dateien auf die UTF-8-Kodierung umzustellen. Wir haben mehrere Resourcebundles, mit denen spezielle Zeichen mit Unicode codiert wurden. Wir wollten dieses Unicode-Zeug auch loswerden, indem wir auf UTF-8 umstellten, also änderte ich auch die Codierung der Resourcebundles-Dateien (.properties) und ersetzte die Unicode-Zeichen.

Wir haben auch deutsche Ressourcenbündel und einige Zeichen wie

Ä, Ö, Ü, ß. ä, ö, ü und auch Sonderzeichen wie „oder“

werden im Browser nicht richtig angezeigt. Beispiel:

Ressourcenbundleentry:

executeShellCommand.label = Shellkommando ausführen

Ergebnis im Browser:

Die Ressourcenbundles werden mit der Java.util.ResourceBundle.getString (String key) -Methode gelesen:

    public String getLocalizedString(ResourceBundle bundle, String key) {
    try {
        System.out.println("getLocalizedString, key: " + key + ", resourcebundle: " + bundle.getString(key));
        return bundle.getString(key);
    } catch (MissingResourceException e) {
        return key;
    }
}

Wenn ich die Ausgabe des obigen Sysout überprüfe, erhalte ich folgendes:getLocalizedString, key: executeShellCommand.label, resourcebundle: Shellkommando ausführen

Es scheint, dass dieDie Methode getString (key) ändert die Kodierung der Zeichen beim Lesen Sie werden aus den Bundles in die Standard-Resourcebundleencodierung (ISO-8859) übernommen.

Ich habe versucht, diesem Problem entgegenzuwirken:

    public String getLocalizedString(ResourceBundle bundle, String key) {
    try {
        System.out.println("getLocalizedString, key: " + key + ", resourcebundle: " + new String (bundle.getString(key).getBytes(), "UTF-8"));
        return new String (bundle.getString(key).getBytes(), "UTF-8");
    } catch (MissingResourceException e) {
        return key;
    } catch (UnsupportedEncodingException e) {
        return key;
    }
}

Dies hat geholfen, die meisten Sonderzeichen wiederzugewinnen, aber es gibt immer noch eine Menge von ihnen, die nicht richtig angezeigt werden:

Ich habe auch die Content-Type-Konfiguration der WebApp überprüft und für jede einzelne Anforderung, die die Ressourcenpakete abruft, ist alles utf-8.

Hat jemand eine Idee wieVerhindern, dass die getString () - Methode die Codierung ändert Oder gibt es einen besseren Weg, um dieses Problem zu lösen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage