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

我在使用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); } 

还有其他想法吗?

谢谢

使用

  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放在引号中

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

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

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

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

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

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

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

我希望这可以帮助任何看过这篇文章的人。