2011-04-22 2 views
0

java로 넷빈으로 개발 한 프로그램이 있습니다. 이 프로그램은 괜찮다고하고 내가 넷빈즈에서 실행 완료되면이 완벽하게 작동Java 기본 언어 응용 프로그램 IDE 외부에서 작동하지 않습니다.

열려있는 새로운 저장 등 일부 작업을 영어가 아닌 언어로 작성된 텍스트를 소요 할 텍스트 창을 .....있다. 그러나 dist 폴더로 이동하여 jar 파일 (실행 파일로되어 있음)을 실행하면 좋았지 만 이전에 저장 한 파일을 편집기로 열면 신비한 글꼴이 표시됩니다.

같은 -

লিখ "원래의 입력은"< < নতুন_লাইন; চলবে (সংখ্যা প = 0; প < যতটা; প ++)

가 à|²à|¿à|-

된다 "원래의 입력은"< < à|¨à|¤à§ à|¨àà|²à|¾à| ​​‡ à|¨; à|šà|²à|¬à§의 ‡ (à|¸à|,à|-à§à|¯à|¾ à|ª = à§|; < à|¯à|¤à| à|ª Ÿà|¾; à|ª ++)

하나 더 흥미로운 점은있다. 편집기에 입력하면 잘 작동합니다 (글꼴 문제 없음).

내가 읽고 내가 언급 한 바와 같이 IDE 내에서 작동 vrinda에있는 텍스트 창의 글꼴을 설정 한

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; 
} 

을 파일에 쓸 이러한 두 기능을 사용하고 있습니다.

나 잘못이 무엇인지 파악하는 데 도움이 바랍니다.

내가 네이티브 지원이 필요한 경우 JAR를 게시해야 할 뭔가가있다?


답변

2

한번에 인코딩 설정을 허용 InputStreamReader 사용하도록 읽기 로직을 ​​변경 :

OutputStreamWriter outputStreamWriter = 
    new OutputStreamWriter(new FileOutputStream (file), "UTF-8"); 
+0

감사합니다. 그것은 내가 InputStreamWrite를 찾을 수 없습니다 그래서 내가 (새 FileOutputStream에 (파일) "UTF-8")는 의 OutputStreamWriter ooutputStreamWriter = 새의 OutputStreamWriter를 - 이것도 추측했다; 다시 감사합니다. – shababhsiddique

+0

예, 오타입니다. 답변에서 수정되었습니다. –

2

루트 문제 :

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

는 또한 인코딩 설정을 허용하는의 OutputStreamWriter를 사용하도록 쓰기 로직을 ​​변경을 현재 응용 프로그램이 "플랫폼 기본"문자 세트/문자 인코딩을 사용하여 파일을 읽는 것입니다. 이것은 명령 행과 NetBeans에서 실행할 때 분명히 다릅니다. 전자의 원인은 플랫폼에 따라 호스트 OS 또는 현재 쉘의 로케일 설정에 따라 다릅니다. NetBeans에서는 기본적으로 UTF-8로 보입니다.

@Andrey Adamovich의 대답은 파일 판독기를 사용하여 파일을 열거 나 입력 스트림 판독기를 사용하여 바이트 스트림을 조정할 때 문자 인코딩을 지정하는 방법을 설명합니다. 아주 아주 아주 아주 아주 아주 아주 아주 아주 아주 아주 아주 아주 많이 귀하의 답변에 대한

관련 문제