читать ресурсный пакет как UTF-8. Метод getString (), кажется, меняет кодировку на ISO-8859
У меня есть почетное задание изменить кодировку нашего полного рабочего пространства, проектов и файлов на кодировку UTF-8. У нас есть несколько Resourcebundles, которые используются для кодирования специальных символов с помощью Unicode. Мы также хотели избавиться от этого Unicode, переключившись на UTF-8, поэтому я также изменил кодировку файлов Resourcebundles (.properties) и заменил символы Unicode.
У нас также есть немецкие ресурсные пакеты и некоторые символы, такие как
Ä, Ö, Ü, ß. ä, ö, ü, а также специальные символы, такие как «или»
не отображаются должным образом в браузере. Пример:
Resourcebundleentry:
executeShellCommand.label = Shellkommando ausführen
Результат в браузере:
Пакеты ресурсов читаются с помощью метода Java.util.ResourceBundle.getString (String key):
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;
}
}
Если я проверяю вывод вышеупомянутого Sysout, я получаю следующее:getLocalizedString, key: executeShellCommand.label, resourcebundle: Shellkommando ausführen
Кажется, чтоМетод getString (key) изменяет кодировку символов при чтении их от связок до стандартного кодирования ресурсов (ISO-8859).
Я пытался противостоять этой проблеме:
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;
}
}
Это помогло восстановить самые специальные символы, но есть еще много, которые не отображаются должным образом:
Я также проверил конфигурацию типа содержимого WebApp и каждого отдельного запроса, который получает пакеты ресурсов, все это utf-8.
У кого-нибудь есть идеи какпредотвратить getString () - метод от изменения кодировки или есть лучший способ решить эту проблему?