dis.readchar中文字母 - 错误解释字符!

时间:2010-12-01 22:43:46

标签: java text file-io

我想将文件读入字符的ArrayList。起初我认为这可能是一个非常光滑的方式:

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 个答案:

答案 0 :(得分:1)

DataInputStream.readChar()假设您正在阅读UTF-16字符。

要读取字符数据,请使用带有正确编码的InputStreamReader(如果文件只包含基本的拉丁字母,则“US-ASCII”就足够了。)