Как прочитать файл свойств на греческом языке, используя Java - PullRequest
0 голосов
/ 29 мая 2010

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

public class I18NSample {

   static public void main(String[] args) {

      String language;
      String country;

      if (args.length != 2) {
          language = new String("el");
          country = new String("GR");
      } else {
          language = new String(args[0]);
          country = new String(args[1]);
      }

      Locale currentLocale;
      ResourceBundle messages;

      currentLocale = new Locale(language, country);

      messages =
        ResourceBundle.getBundle("MessagesBundle",currentLocale, new CustomClassLoader("E:\\properties"));

      System.out.println(messages.getString("greetings"));
      System.out.println(messages.getString("inquiry"));
      System.out.println(messages.getString("farewell"));
   }
}

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;


public class CustomClassLoader extends ClassLoader {

    private String path;



    public CustomClassLoader(String path) {
        super();
        this.path = path;
    }



    @Override
    protected URL findResource(String name) {
        File f = new File(path + File.separator + name);
        try {
            return f.toURL();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        return super.findResource(name);
    }

}

MessagesBundle_el_GR.properties привет = ρήμ. χαιρετώ Прощальный = επιφ. αντίο

запрос = τι κάνεισ, τι κάνετε

Я собираю как этот javac-кодирование UTF8 CustomClassLoader.java javac-кодирование UTF8 I18Sample.java

Когда я запускаю это, я получаю искаженный вывод. Если файл свойств на английском, французском или немецком языке, он работает нормально. Пожалуйста помоги. С Уважением, Subhendu

Ответы [ 2 ]

0 голосов
/ 29 мая 2010

Спасибо Theatrus.

Я пытался напрямую прочитать файл свойств следующим образом:

FileInputStream fis = new FileInputStream("E:\\properties\\MessagesBundle_el_GR.properties");
        DataInputStream dis = new DataInputStream(fis);
        BufferedReader br = new BufferedReader(new InputStreamReader(dis, "ISO-8859-7"));
        String strLine;
        while((strLine = br.readLine()) != null){
            System.out.println(strLine);
        }

        dis.close();

Это не помогло.

Мы можем поместить ту же информацию в базу данных и прочитать ее оттуда. Хотя в терминале машины, где установлена ​​база данных mysql, мы получаем сообщение, отображаемое на греческом языке, когда мы пытаемся прочитать то же самое из кода Java, оно искажается. Поможет ли javac-кодирование UTF8 для чтения сообщения из базы данных?

Инструмент native2ascii не окажет особой помощи, поскольку пользователь нашей системы не согласится принять на себя всю эту боль. Пользователь готов использовать базу данных (поскольку мы предоставим графический интерфейс для входа в базу данных) или файл свойств.

С уважением,


Subhendu

0 голосов
/ 29 мая 2010

Согласно документации , файлы свойств, по-видимому, ограничены ISO 8859-1. Тем не менее, они поддерживают экранирование Unicode, и в связанной документации есть инструмент для автоматического создания указанных экранирований.

Загрузчик XML допускает кодирование XML в кодировке UTF-8.

Параметры javac применяются только к строковым литералам в файле .java и не влияют на поведение программы во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...