2010-12-01 3 views
1

파일을 ArrayList of Characters로 읽으 려합니다. 그 이유dis.readchar 중국어 문자 - 잘못 해석 된 문자!

이 가
噖 
䝃 
塘 
䕅 

누군가가 말해 수 : 제가 중국어 편지를 얻을 이렇게하면

ArrayList<Character> char_chain = new ArrayList<Character>(); 


try { 
      fis = new FileInputStream(file); 
      bis = new BufferedInputStream(fis); 
      dis = new DataInputStream(bis); 

      while (dis.available() != 0) { 
       // UTF8 unnoetig, da 26 Lettern 
       while (!EOF) { 
        try { 
         char_chain.add(dis.readChar()); 
        } catch (EOFException e) { 
         EOF = true; 
        } 
       } 
      } 
     if (debug) { 
      while (char_chain.get(i) instanceof Character) { 
       System.out.println(char_chain.get(i++)); 
      } 
     } 

: 처음에 나는이 그 일을 아주 매끄러운 방법이 될 줄 알았는데? :) 나는 텍스트가 ABCDE와 같은 대문자를 포함하고 있다고 언급해야한다.

답변

1

DataInputStream.readChar()은 UTF-16 문자를 읽고 있다고 가정합니다.

문자 데이터를 읽으려면 InputStreamReader을 올바른 인코딩으로 사용하십시오. 파일에 기본 라틴 문자 만 포함되어 있으면 "US-ASCII"로 충분해야합니다.

관련 문제