2012-10-13 1 views
1

다음 프로그램은 일반 영어 문자열과 우르두 문자열을 구분합니다.IDE를 통해 자동 컴파일 및 실행과 비교하여 코드를 수동으로 컴파일하고 실행할 때 다른 출력이 나타나는 이유

enter image description here

: 파일 tes.txt 이런 식으로 뭔가를 보았을 때

∩╗┐╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ 

suhail 

╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ 

gupta 

╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ 

cse 

╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ 

ghazal 

╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ 

: 나는 메모장 ++ 그것을 컴파일이 프로그램

try { 
    File f = new File("C:/Users/user/Desktop/tes.txt"); 
    FileReader reader = new FileReader(f); 
    BufferedReader br = new BufferedReader(reader); 
    String text = ""; 
    String s; 
    while((s = br.readLine()) != null) { 
     text += s; 
    } 

    String splits[] = text.split("سٹیمپ ختم ہو جاتی ہے"); 

    for(int i=0;i<splits.length;i++) { 
     System.out.println(splits[i]); 
    } 
} catch(Exception exc) { 
    exc.printStackTrace(); 
    } 

을 쓰고,이 출력을 얻기 위해 그것을 실행

하지만 netbeans IDE에서 동일한 프로그램을 실행할 때 예상되는 출력은 다음과 같습니다.

suhail 
gupta 
cse 
ghazal 

내가 메모장에서 작성 ++ 다음 명령을 사용하여 컴파일 한 후 같은 프로그램을 실행할 때 차이가 무엇을 만드는가 않습니다

javac -encoding UTF-8 checker.java 
java checker 

을하고 넷빈즈 IDE에서 같은 프로그램을 복사하고 눌러 버튼을 실행 하시겠습니까? 첫 번째 경우 문자열은 정규 표현식 urdu string에서 분리되지 않습니다.

+0

@LuiggiMendoza를 지정하여 컴파일하는 방법 : ** 자바 검사기 ** 장소 : ** 윈도우, 자바 1.7.0-개 **, 검사기가 클래스 파일의 이름입니다 –

+0

FileReader 매개 변수에서 읽을 파일의 인코딩을 전달해야합니다. –

+0

샘플을 줄 수 있습니까? 그러나 이것이 문제라면 netbeans IDE를 사용할 때 올바른 결과를 얻는 이유는 무엇입니까? –

답변

0

FileReaderFileWriter 클래스는 시스템의 기본 문자 인코딩을 암시 적으로 사용합니다.

1) 메시지의 인코딩 변경 : chcp 65001

2) InputStreamReader

import java.io.*; 

public class UnicodeTestFile{ 

public static void main(String args[]) throws Exception{ 

try { 
    File f = new File("C:/Users/user/Desktop/tes.txt"); 
    InputStreamReader ir = new InputStreamReader(new FileInputStream(f),"UTF-8"); 
    BufferedReader br = new BufferedReader(ir); 
    String text = ""; 
    String s; 
    while((s = br.readLine()) != null) { 
     text += s; 
    } 

    String splits[] = text.split("سٹیمپ ختم ہو جاتی ہے"); 

    for(int i=0;i<splits.length;i++) { 
     System.out.println(splits[i]); 
    } 
} catch(Exception exc) { 
    exc.printStackTrace(); 
    }} 
} 
의 생성자에서 문자 집합을 지정 InputStreamReader

InputStreamReader in = new InputStreamReader(new FileInputStream(f), "UTF-8"); 
BufferedReader br = new BufferedReader(in); 
    while(br.ready()) 
    { 
     text = text+br.readLine(); 
    } 

편집으로 읽기

시도

3) 인코딩

javac -encoding UTF-8 Checker.java 
+0

코드 [여기] (http://i49.tinypic.com/zsqr0z.jpg)를 살펴볼 수 있습니까? 빨간색으로 표시된 문장을 확인하십시오. offset과 3 번째의 인수는 읽어내는 문자의 최대 수입니다. –

+0

@SuhailGupta : 'Offset'은 문자를 저장하려는 곳입니다. 이런 식으로 읽는 대신'BufferedReader'를 사용하여 랩 한 다음 읽습니다. 나는 대답을 업데이트했다. –

+0

아직 우르두 문자는 인쇄되지 않습니다. 대신 우르두어 텍스트에 물음표가 표시됩니다.그리고 제가 여러분에게 보여준 코드 스냅 샷에서 어떤 실수를했습니다. –

관련 문제