我在读取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 )) {
...
}