У меня проблема при разборе файла, закодированного с помощью UTF8.BeanIO - UnidentifiedRecordException при разборе файла UTF8
У меня есть два файла, которые полностью идентичны, за исключением их кодирования. (Я просто просто скопировал файл и сохранил его с помощью UTF8, поэтому содержимое идентично). Один кодируется с использованием ANSI, другой - с UTF8. Файл, который кодируется с ANSI является успешно разобран, а другой файл вызывает BeanIO бросить UnidentifiedRecordException при вызове метода BeanReader.read():
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);
}
который не решает проблему.
В чем причина этой ошибки?
Пытался сохранить файл как UTF 8 без спецификации, и это сработало. Но почему BeanReader не распознает последовательность BOM в начале, когда я устанавливаю кодировку UTF 8? У меня есть и другие проблемы, связанные с этим, которые не могут быть решены путем изменения кодировки вручную в файле, поэтому меня больше интересовало, является ли это ошибкой в BeanIO или есть другой способ решить эту проблему. – Maraider
Некоторые парсеры, т. Е. Синтаксические анализаторы XML, не распознают спецификацию как пробел. Здесь ожидается «запись». И спецификация (помимо того, что является чистым ненужным артефактом Юникода) является таким особым случаем и даже невидимым для человеческого глаза. –