2010-12-01 16 views
1

Ich möchte eine Datei in eine ArrayList von Zeichen lesen. Zuerst dachte ich, das einen ziemlich glatt Weg sein könnte, es zu tun:dis.readchar Chinesische Buchstaben - falsch interpretierte Zeichen!

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

Wenn ich das bekomme ich chinesische Buchstaben:

噖 
䝃 
塘 
䕅 

Könnte mir jemand sagen, warum das so ist? :) Ich sollte erwähnen, dass der Text normale Großbuchstaben enthält wie: ABCDE und so weiter.

Antwort

1

DataInputStream.readChar() wird davon ausgegangen, dass Sie UTF-16-Zeichen lesen.

Um Zeichendaten zu lesen, verwenden Sie eine InputStreamReader mit der korrekten Codierung ("US-ASCII" sollte ausreichen, wenn die Datei nur grundlegende lateinische Buchstaben enthält).

Verwandte Themen