使用java读取utf-8编码的文本文件

Abr*_*ial 26 java file-io encoding netbeans

我在使用utf-8编码读取文本文件时遇到问题我正在使用带有netbeans 7.2.1平​​台的java

我已经配置了java项目来处理UTF-8 javaproject ==>右键单击==> properties ==> source ==> UTF-8

但仍然得到未知的字符输出:

代码:

File fileDirs = new File("C:\\file.txt");

BufferedReader in = new BufferedReader(
new InputStreamReader(new FileInputStream(fileDirs), "UTF-8"));

String str;

while ((str = in.readLine()) != null) {
    System.out.println(str);
}
Run Code Online (Sandbox Code Playgroud)

还有其他想法吗?

谢谢

Sho*_*rma 34

使用

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;     
    public class test {
    public static void main(String[] args){

    try {
        File fileDir = new File("PATH_TO_FILE");

        BufferedReader in = new BufferedReader(
           new InputStreamReader(new FileInputStream(fileDir), "UTF-8"));

        String str;

        while ((str = in.readLine()) != null) {
            System.out.println(str);
        }

                in.close();
        } 
        catch (UnsupportedEncodingException e) 
        {
            System.out.println(e.getMessage());
        } 
        catch (IOException e) 
        {
            System.out.println(e.getMessage());
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您需要将UTF-8放在引号中


Mov*_*ast 10

您正在读取文件,但问题似乎是默认编码System.out.试试这个打印UTF-8字符串 -

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(str);
Run Code Online (Sandbox Code Playgroud)


jin*_*kal 9

您需要使用Charset参数指定InputStreamReader的编码.

Charset inputCharset = Charset.forName("ISO-8859-1");
InputStreamReader isr = new InputStreamReader(fis, inputCharset));
Run Code Online (Sandbox Code Playgroud)

这对我有用.我希望能帮助你.