我在解析UTF8编码的文件时遇到了一个问题。
我有两个完全相同的文件,除了它们的编码。(我只是复制了文件并用UTF8保存,所以内容是相同的)。一个使用ANSI编码,另一个使用UTF8编码。使用ANSI编码的文件被成功解析,而另一个文件导致BeanIO在调用BeanReader.read()方法时抛出UnidentifiedRecordException:
org.beanio.UnidentifiedRecordException: Unidentified record at line 1
我试图通过使用以下代码显式地将编码设置为UTF8来解决这个问题:
public static BeanReader getBeanReader(File file, StreamBuilder builder) {
StreamFactory factory = StreamFactory.newInstance();
factory.define(builder);
InputStream iStream;
try {
iStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
throw new CustomException("Could not create BeanReader, file not found", e);
}
Reader reader = new InputStreamReader(iStream, StandardCharsets.UTF_8);
return factory.createReader("reader", reader);
}
不能解决问题。
这个错误的原因是什么?
由于第一行被认为是错误的,您是否保存了没有BOM的UTF-8 (文件开头那个臭名昭著的零宽度空格)?