我正在用一个简单的 Java 程序处理几个 txt 文件,我的第一步是计算每个文件的行数:
int count = 0;
br = new BufferedReader(new FileReader(myFile)); // myFile is the txt file in question
while (br.readLine() != null) {
count++;
}
对于我的一个文件,Java 计算的行数正好是实际行数的两倍!起初这让我很困惑。我在 Notepad++ 中打开了每个文件,可以看到错误计数的文件以与其他文件完全相同的方式结束每一行,带有 CR 和 LF。我又摸索了一下,发现我所有的“ok”文件都是 ANSI 编码的,而一个问题文件被编码为 UCS-2 Little Endian(我对此一无所知)。我在其他地方得到了这些文件,所以我不知道为什么以这种方式编码,但当然将其切换到 ANSI 解决了这个问题。
但现在好奇心依然存在。为什么编码会导致双行计数报告?
谢谢!