Java: Как написать «арабский» в файле свойств? - PullRequest
7 голосов
/ 10 января 2011

Я хочу написать "арабский язык" в файле пакета (свойств) ресурса сообщений, но когда я пытаюсь сохранить его, я получаю эту ошибку:

"Сохранить не удалось Некоторые символы не могут быть сопоставлены с использованием кодировки символов «ISO-85591-1». Измените кодировку или удалите символ ... "

Может кто-нибудь помочь, пожалуйста?

Я хочу написать:

global.username = اسم المستخدم

Как мне написать арабский "username" в файле свойств? Итак, эта интернационализация работает ..

BR SC

Ответы [ 7 ]

8 голосов
/ 10 января 2011

http://sourceforge.net/projects/eclipse-rbe/

Вы можете использовать вышеуказанный плагин для Eclipse IDE, чтобы выполнить преобразование Unicode для вас.

5 голосов
/ 10 января 2011

Как описано в справочнике по классу «Свойства»

Методы load (Reader) / store (Writer, String) загружают и сохраняют свойства от и до символьный поток в простом строковом формате, указанном ниже. Методы load (InputStream) / store (OutputStream, String) работают так же, как пара load (Reader) / store (Writer, String), за исключением того, что поток ввода / вывода закодирован в Кодировка ISO 8859-1. Символы, которые не могут быть непосредственно представлены в этом кодировка может быть написана с использованием экранирования Unicode; разрешен только один символ 'u' в побег последовательности. Инструмент native2ascii можно использовать для преобразования файлов свойств в и из других кодировок символов.

4 голосов
/ 10 января 2011

Пакеты ресурсов на основе свойств должны быть закодированы в ISO-8859-1 для использования механизма загрузки по умолчанию, но я успешно использовал этот код, чтобы разрешить кодирование файлов свойств в UTF-8:

private static class ResourceControl extends ResourceBundle.Control {
    @Override
    public ResourceBundle newBundle(String baseName, Locale locale,
            String format, ClassLoader loader, boolean reload)
            throws IllegalAccessException, InstantiationException,
            IOException {
        String bundlename = toBundleName(baseName, locale);
        String resName = toResourceName(bundlename, "properties");
        InputStream stream = loader.getResourceAsStream(resName);
        return new PropertyResourceBundle(new InputStreamReader(stream,
                "UTF-8"));
    }

}

Тогда, конечно, вы должны изменить кодировку самого файла на UTF-8 в вашей IDE и использовать его следующим образом:

ResourceBundle bundle = ResourceBundle.getBundle(
    "package.Bundle", new ResourceControl());
1 голос
/ 02 сентября 2014

new String(ret.getBytes("ISO-8859-1"), "UTF-8"); работал для меня.файл свойств сохранен в ISO-8859-1 Encodiing.

0 голосов
/ 13 мая 2019

Помимо инструмента native2ascii, упомянутого в других ответах, существует библиотека Java с открытым исходным кодом, которая может предоставлять функции преобразования для использования в коде

Библиотека MgntUtils имеет утилиту, которая преобразует строки на любом языке.(включая специальные символы и смайлики для последовательности Юникода и наоборот:

result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);

Вывод этого кода:

\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World

Библиотека находится в Maven Central или Github Он поставляется в виде артефакта maven с исходными кодами и javadoc

Здесь представлен Javadoc для класса StringUnicodeEncoderDecoder

0 голосов
/ 19 сентября 2011

В основном это проблема конфигурации редактора. Если вы работаете в Windows, вы можете редактировать текст в редакторе, который поддерживает UTF-8. Встроенного редактора Notepad или Eclipse должно быть более чем достаточно, если вы сохранили файл в формате UTF-8. В Linux я успешно использовал gedit и emacs. В Блокноте вы можете сделать это, нажав кнопку «Сохранить как» и выбрав кодировку «UTF-8». Другие редакторы должны иметь аналогичную функцию. Некоторым редакторам может потребоваться изменить шрифт, чтобы правильно отображать буквы, но, похоже, у вас нет этой проблемы.

Сказав это, есть другие шаги, которые следует учитывать при выполнении i18n для арабского языка. Вы можете найти некоторые полезные ссылки ниже. Убедитесь, что используете native2ascii для файла свойств, прежде чем использовать его, иначе он может не работать. Я провел много времени, пока не понял это.

Tomcat webapps

Использование nativ2ascii с файлами свойств

0 голосов
/ 10 января 2011

Если вы используете Eclipse, вы можете выбрать «Окно -> Настройки», а затем применить фильтр к «типам контента».Тогда вы сможете установить кодировку по умолчанию.Вот скриншот, показывающий это вверху этого поста .

...