使用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) { }
我希望这可以帮助任何看过这篇文章的人。