Как получить байты как UTF-8Y в Java

Я использую парсер sax для анализа файла xml, который имеет кодировку utf-8y. Как я могу указать это в парсере саксофона или источнике ввода? Я всегда получаю исключение разбора


person Pan    schedule 29.06.2011    source источник
comment
продублировано: stackoverflow.com/questions/5353783/   -  person leonbloy    schedule 30.06.2011


Ответы (2)


Я предполагаю, что вы читаете файл через InputStream? Парсер должен уметь определять тип файла по заголовку XML. Если вы читаете файл в строку, а затем анализируете его, он имеет грушевидную форму.

person Petesh    schedule 29.06.2011
comment
Извините, а в заголовке файла есть маркер BOM? если это так, то есть несколько задокументированных обходных путей, например. webcache.googleusercontent.com/ Если XML-заголовок файла неверно указывает содержимое файла, вы можете использовать BufferedInputStream и переписать содержимое при передаче его в парсер - person Petesh; 30.06.2011

Просто чтобы убедиться: является ли это «Y» чем-то, что включено в значение «кодирования» XML-документа? Тогда я не удивлюсь, если вы получите сообщение об ошибке — такой кодировки не существует. Я предполагаю, что это ошибка в том, что создало документ, и ее следует исправить.

Но с вашей стороны у вас есть два основных варианта:

  1. Создайте InputStreamReader самостоятельно из InputStream, передав «UTF-8» в качестве кодировки
  2. Измените входной документ перед синтаксическим анализом, чтобы удалить оттуда этот «y»

Первый подход прост, и большинство парсеров должны с ним работать. Второй вариант можно использовать, если первый не работает.

person StaxMan    schedule 30.06.2011