Saw*_*yer 5 java csv unicode character-encoding java-io
我正在逐行读取包含关键字的文件,发现一个奇怪的问题。我希望如果内容相同,则彼此遵循的行仅应处理一次。喜欢
sony
sony
Run Code Online (Sandbox Code Playgroud)
只有第一个被处理。但是问题是,java不能将它们平等对待。
INFO: [, s, o, n, y]
INFO: [s, o, n, y]
Run Code Online (Sandbox Code Playgroud)
我的代码如下所示,问题出在哪里?
FileReader fileReader = new FileReader("some_file.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
String prevLine = "";
String strLine
while ((strLine = bufferedReader.readLine()) != null) {
logger.info(Arrays.toString(strLine.toCharArray()));
if(strLine.contentEquals(prevLine)){
logger.info("Skipping the duplicate lines " + strLine);
continue;
}
prevLine = strLine;
}
Run Code Online (Sandbox Code Playgroud)
更新:
似乎在第一行中有一个空格,但实际上没有,并且这种trim方法对我不起作用。它们不一样:
INFO: [, s, o, n, y]
INFO: [ , s, o, n, y]
Run Code Online (Sandbox Code Playgroud)
我不知道Java添加的第一个Char是什么。
已解决:BalusC的解决方案解决了该问题,感谢您指出了BOM的问题,该问题帮助我快速找到了解决方案。
小智 0
strLine.trim()如果空格在处理中并不重要,那么每次调用都可能是值得的。这就是我在处理这样的输入时通常所做的 - 如果必须手动编辑空格,则空格很容易渗入文件中,并且如果它们不重要,则可以并且应该忽略它们。
编辑:文件编码为 UTF-8 吗?打开文件时您可能需要指定编码。如果它发生在第一行,它可能是字节顺序标记或类似的东西。
尝试:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3786 次 |
| 最近记录: |