【问题标题】:JAVA Unrecognized Character of the first character in the first line第一行第一个字符的JAVA无法识别的字符
【发布时间】:2017-08-23 21:02:24
【问题描述】:

我有几行代码可以用 Java 读取文件的内容。基本上我使用的是FileReaderBufferedReader。我正在正确阅读这些行,但是,第一行的第一个字符似乎是一个未定义的符号。因为输入文件的内容是正确的,所以我不知道我从哪里得到这个符号。

代码如下:

FileReader readFile = new FileReader(chosenFile);
BufferedReader input = new BufferedReader(readFile);
while((line = input.readLine()) != null) {
    System.out.println(line); 
}

【问题讨论】:

  • 如果您使用 Windows 记事本保存文件,您的数据是 ANSI 编码的,但 FileReader 将使用您的平台默认值,这可能与文件编码不同。强制编码使用Instead of FileReader you need to use new InputStreamReader(new FileInputStream(pathToFile), <encoding>)
  • 这个实例的正确编码是什么?

标签: java string file bufferedreader filereader


【解决方案1】:

如果它只出现在第一行,这可能是BOM (Byte Order Mark)。所有现代文本编辑器都能识别这一点,并且不会将其作为文本文件的一部分呈现。保存文本文件时,应该可以选择是否保存。

如果您想在 java 中读取 BOM 标记,请参阅此处Reading UTF-8 - BOM marker

【讨论】:

  • 啊,我对 java 的识字还不是很全面。在这种情况下,先生,我应该如何修复 BOM。
  • 我找到了答案。我只是使用 line.replace("\uFEFF", "") 来替换/删除 BOM
猜你喜欢
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多