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



我在读取utf-8编码的文本文件时遇到问题我将java与netbeans 7.2.1平台一起使用

我已经将java项目配置为处理UTF-8javaproject===>右键单击===>属性===>源===>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);
}

还有其他想法吗?

感谢

使用

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

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

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

Charset inputCharset = Charset.forName("ISO-8859-1");
InputStreamReader isr = new InputStreamReader(fis, inputCharset));

这是我的工作。我希望能帮助你。

您正在正确读取文件,但问题似乎出在System.out的默认编码上。尝试打印UTF-8字符串-

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(str);

每次它发现一个特殊字符将其标记为时,我都会遇到同样的问题��.为了解决这个问题,我尝试使用编码:ISO-8859-1

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1"));
while ((line = br.readLine()) != null) {
}

我希望这能帮助任何看到这篇文章的人。

好的,我肯定迟到了,但如果你仍在寻找最佳解决方案,我会使用以下(针对Java 8)

    Charset inputCharset = Charset.forName("ISO-8859-1");
    Path pathToFile = ....
    try (BufferedReader br = Files.newBufferedReader( pathToFile, inputCharset )) {
        ...
     }

相关内容

  • 没有找到相关文章

最新更新