【发布时间】:2016-03-31 03:37:08
【问题描述】:
我正在编写一个解析 UTF-8 编码文件的项目。
我是这样做的
ArrayList<String> al = new ArrayList<>();
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(new FileInputStream(filename),"UTF8"));
String line = null;
while ((line = bufferedReader.readLine()) != null)
{
al.add(line);
}
return al;
奇怪的是,当我在 IntelliJ 中运行它时,它会正确读取文件,但当我通过 java -jar 运行它时却没有(它给我的是垃圾值而不是 UTF8)。
我能做什么
- 在与 intelliJ 相同的环境中通过 java -jar 运行我的 Java 或
- 修复我的代码,使其将 UTF-8 读入字符串
【问题讨论】:
-
您的打印代码看起来如何?我的意思是告诉你值是垃圾的代码,它打印
al。 -
@SabirKhan System.out.println(line);
-
File已过时。您可以使用Files.readAllLines(Paths.get(filename), StandardCharsets.UTF_8)为您完成所有工作。 -
我猜,它不应该是
UTF8,而是UTF-8。UTF-8是跨平台标准化的,而UTF8不是。 -
我同意@SabirKhan。您应该使用接受
CharSet而不是String的InputStreamReaderctor,尽管我不确定这是否是 OP 所说的差异的原因。