Приложение на родном языке Java Не работает вне IDE - PullRequest
0 голосов
/ 22 апреля 2011

У меня есть программа, разработанная под Java с NetBeans. Он имеет текстовую панель, которая принимает текст, написанный не на английском языке, и выполняет некоторые операции, включая сохранение, открытие нового .....

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

как-

লিখ «Исходные данные» << নতুন_লাইন; চলবে (সংখ্যা প = ০; প <যতটা; প ++) </p>

становится

লিখ «Исходные данные» << নতৠন_লাঠ‡ ন; চলবৠ‡ (সংঠ– ৠযা প = ০; প <¦¦¯à¦¤à¦Ÿà |¾; à|ª ++) </p>

еще одна интересная вещь - это. Если я наберу в редакторе, он также работает нормально (без проблем со шрифтами).

Я использую эти 2 функции для чтения и записи в файл

public void writeToFile(String data,String address)
{
      try{
          // Create file 
    FileWriter fstream = new FileWriter(address);
        BufferedWriter out = new BufferedWriter(fstream);
    out.write(data);
    //Close the output stream
    out.close();
    }catch (Exception e){//Catch exception if any
      System.err.println("Error: " + e.getMessage());
    }

}


public String readFromFile(String fileName) {
   String output="";
    try {
     File file = new File(fileName);
     FileReader reader = new FileReader(file);
     BufferedReader in = new BufferedReader(reader);
     String string;
     while ((string = in.readLine()) != null) {
       output=output+string+"\n";
     }
     in.close();
   } catch (IOException e) {
     e.printStackTrace();
   }
    return output;
 }

Я установил шрифт текстовой панели как vrinda, который работает из среды IDE, как я уже говорил.

Пожалуйста, помогите мне определить, что не так.

Что мне нужно сделать, чтобы опубликовать JAR, когда требуется встроенная поддержка?


Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Основная проблема заключается в том, что ваше текущее приложение читает файл, используя набор символов «кодировка платформы» / кодировку символов.Это очевидно отличается, когда вы работаете из командной строки и из NetBeans.В первом случае это зависит от настроек локали операционной системы хоста или текущей оболочки ... в зависимости от вашей платформы.Похоже, что в NetBeans по умолчанию используется UTF-8.

@ В ответе Андрея Адамовича объясняется, как задать кодировку символов при открытии файла с помощью программы чтения файлов или адаптации потока байтов с помощью программы чтения входного потока.*

2 голосов
/ 22 апреля 2011

Попробуйте изменить логику чтения, чтобы использовать InputStreamReader, который позволяет устанавливать кодировку:

InputStreamReader inputStreamReader = 
  new InputStreamReader(new FileInputStream (file), "UTF-8" );

Также изменить логику записи, чтобы использовать OutputStreamWriter, который позволяет устанавливать кодировку:

OutputStreamWriter outputStreamWriter = 
  new OutputStreamWriter(new FileOutputStream (file), "UTF-8" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...