Есть метод, который в зависимости от локали пользователя выводит сообщение. Проблема в том, что не отображаются русские символы. Я получаю такой вид
"������ �����, Kiev", а с английским все нормально "Good evening, Kiev".
Думал, может проблема в кодировки, не помогло. Вот код метода:
public static void VuvodPriv(ResourceBundle bundle, String gorod, double time)
{
try {
if (time >= 6.00 && time <= 9.00) {
String key = bundle.getString("Utro");
String s1 = new String(key.getBytes("ISO-8859-1"), "UTF-8");
System.out.println(s1 + gorod);
} else if (time > 9.00 && time <= 19.00) {
String key = bundle.getString("Den");
String s1 = new String(key.getBytes("ISO-8859-1"), "UTF-8");
System.out.println(s1 + gorod);
} else if (time > 19.00 && time <= 23.00) {
String key = bundle.getString("Vecher");
String s1 = new String(key.getBytes("ISO-8859-1"), "UTF-8");
System.out.println(s1 + gorod);
} else if (time > 23.00 && time < 6.00) {
String key = bundle.getString("Noch");
String s1 = new String(key.getBytes("ISO-8859-1"), "UTF-8");
System.out.println(s1 + gorod);
}
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
Locale current = Locale.getDefault();
ResourceBundle bundle1 = ResourceBundle.getBundle("text",current);
И сам "properties" по умолчанию:
Utro = Доброе утро,
Den = Добрый день,
Vecher = Добрый вечер,
Noch = Доброй ночи,
для ясности было бы неплохо взглянуть на ресурсный файл. предполагаю, что он сохранен в неправильной кодировке, т.е. не в той в которой читается. если он грузиться (по умолчанию) через PropertyResourceBundle то файл должен быть сохранен в кодировке ISO-8859-1
The property file read with this constructor must be encoded in ISO-8859-1. т.е. не латинские символы должны быть "заэскейплены" например:
km = \u043A\u043C
иначе, если хочется иметь читабельные файлы, придется имплементить свой ResourceBundle.Control и использовать его при создании bundle.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей