Японский текст в файле Java .properties - PullRequest
1 голос
/ 07 декабря 2011

Я пытаюсь прочитать японские строковые значения из файла .properties с кодом:

Properties properties = new Properties();
InputStream in = MyClass.class.getResourceAsStream(fileName);
properties.load(in);

Проблема, очевидно, заключается в том, что приведенный выше код не распознает кодировку файла.Он читает только английские части и заменяет японские символы на вопросительные знаки.Кстати, это не проблема с отображением японского текста на Swing или чтением / записью файла .properties в кодировке UTF-8 в редакторе.Обе вещи работают.

Не кодирует класс Properties?Существует ли альтернатива с учетом кодировки, которая не нарушает настройки диспетчера безопасности, обычно встречающиеся в апплетах?

Ответы [ 4 ]

3 голосов
/ 07 декабря 2011

По-моему, вам нужно конвертировать японские символы в escape-строку java Unicode

Например, так я поступил с вьетнамцами

Currency_Converter = Chuyen doi tien te  

Enter_Amount = Nh\u1eadp v\u00e0o s\u1ed1 l\u01b0\u1ee3ng  

Source_Currency = \u0110\u01a1n v\u1ecb g\u1ed1c  

Target_Currency = \u0110\u01a1n v\u1ecb chuy\u1ec3n  

Converted_Amount = K\u1ebft qu\u1ea3  

Convert = Chuy\u1ec3n \u0111\u1ed5i  

Alert_Mess = Vui l\u00f2ng nh\u1eadp m\u1ed9t s\u1ed1 h\u1ee3p l\u1ec7  

Alert_Title = Thong bao  
3 голосов
/ 07 декабря 2011

load ожидает кодирование ISO 8859-1, как указано в документах .

Как правило, вы хотите использовать native2ascii для преобразования файлов свойств, загружая их с помощьючитатель, или используйте XML, где вы можете указать кодировку.

0 голосов
/ 13 января 2017

можно прочитать любой язык из файла свойств, вам нужно просто получить значение по ключу из файла свойств, а затем создать новую строку new String(keyValue.getBytes("ISO-8859-1"), "UTF-8"), то есть она создаст для вас строку UTF-8 .

public static String getLocalizedPropertyValue(String fileName, String key, Locale locale) throws UnsupportedEncodingException {
    Properties props = getPropertiesByLocale(fileName, locale);
    String keyValue = props.getProperty(key);
    return keyValue != null ? new String(keyValue.getBytes("ISO-8859-1"), "UTF-8") : "";
}
0 голосов
/ 07 декабря 2011

Рассматривали ли вы использование ResourceBundle ?

...