Java - 不正确的读者

时间:2017-12-14 22:10:56

标签: java file-io bufferedreader reader

我正在尝试读取包含特殊字符的txt文件,但其中一些字符被读作方块。

这里的代码。

package reader;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Reader {
    public static void main(String[] args) throws IOException {
        File file = new File("cfg.txt");
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line;
        while( (line=reader.readLine()) != null ){
            System.out.println(line);
        }
    }
}

文件:

ÉCltTctocsWicÉ#V^ÊûJö=

控制台输出:

�CltTctocsWic�#V^��J�=

该项目使用的是UTF-8。已经尝试过与FileInputStream相同的结果。

我需要另一位读者吗?

修改:解决

感谢@shmosel,文本文件不是UTF-8 感谢@ACV,InputStreamReader是必要的。

这里是新代码:

public class Reader {
    public static void main(String[] args) throws IOException {
        File file = new File("cfg.txt");

        /*to write*/
        BufferedWriter ou = new BufferedWriter(
                new OutputStreamWriter(
                        new FileOutputStream(file),"UTF8"));
        ou.append("ÉCltTctocsWicÉ#V^ÊûJö=");
        ou.close();

        /*to read*/
        BufferedReader in = new BufferedReader(
           new InputStreamReader(
                  new FileInputStream(file), "UTF8"));
        String line;
        while( (line=in.readLine()) != null ){
            System.out.println(line);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

<ul id="someid">
    <li>test1</li>
    <li>test2</li>
    <li>test3</li>
    <li>test4</li>
    <li>test5</li>
</ul>

所以基本上UTF-8文件必须像二进制文件一样读取 - 使用FileInputStream