2013-08-08 3 views
0

여기 자막 파일을 변경하려면이 앱을 만들고 있습니다. 테스트 할 때 이상한 문제에 직면했습니다. 영어가 아닌 언어 (예 : 페르시아어)에서 테스트했을 때 프로그램에서 파일을 읽지 않았습니다. 이 내 프로그램에서 자막을 읽는 방법은 다음과 같습니다스캐너 자바로 영어가 아닌 문자를 읽는 방법?

주소가 .SRT 파일의 위치를 ​​유지하는 String입니다
Scanner sub = null; 
    try { 
     sub = new Scanner(new File(address)); 
    } catch (FileNotFoundException ex) { 
     ex.printStackTrace(); 
    } 
while(sub.hasNext()){ 
    String sentence = sub.nextLine(); 
    //some magical stuff here :) 
} 

.

프로그램에서 파일을 읽으려면 어떻게해야합니까?

+1

파일이 쓰여진 인코딩을 찾아서 스캐너 생성자에 제공하십시오. –

답변

7

Scanner을 만들 때 다른 인코딩을 선택하십시오. 이의 라인을 따라

뭔가 작동 할 수 있습니다 :

new Scanner(new File(address), "UTF-16"); 

이는 UTF-16 인코딩을 사용하여 파일을 읽을 수있는 스캐너를 변경합니다.

인코딩 here에 대한 자세한 내용을 읽을 수 있습니다.

1

이것은 java 문서에서 찾을 수있는 생성자입니다. 입력 파일의 인코딩을 찾아서이 생성자를 사용하십시오. 나는 이것이 효과가 있다고 생각한다.

/** 
* Constructs a new <code>Scanner</code> that produces values scanned 
* from the specified input stream. Bytes from the stream are converted 
* into characters using the specified charset. 
* 
* @param source An input stream to be scanned 
* @param charsetName The encoding type used to convert bytes from the 
*  stream into characters to be scanned 
* @throws IllegalArgumentException if the specified character set 
*   does not exist 
*/ 
public Scanner(InputStream source, String charsetName) { 
    this(makeReadable(source, charsetName), WHITESPACE_PATTERN); 
}