Вопрос

Наш SaxParser не игнорирует маркировку заказа байта который появляется в начале файла.

Как я могу получить свой Sax Parser, чтобы игнорировать знак заказа байта?

Это было полезно?

Решение

Похоже, вы можете дать вход UTF-16 в SaxParser, который не ожидает UTF-16. Попробуйте преобразовать данные в UTF-8, это может помочь.

Другие советы

Проверьте файл в шестнадцатеричном редакторе.

Если исходные байты действительно \xEF\xBB\xBF сопровождается самим документом, то это искусственный спектр UTF-8. Хотя UTF-8 Faux-Boms - это грязная неправильность и инструменты, которые генерируют их, должны быть уничтожены со специальной программирующей кислотой, SPEC XML делает требовать Парсер для распознавания и игнорируют эту байтовую последовательность, поэтому, если ваш SAX Parser не оно не соответствует и нуждается в нескольких ударах.

Если начальные байты, которые дают вам  на самом деле что-то вроде одного из:

\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\xBB\xBF\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\x00\xBB\x00\xBF\x00
\xFF\xFE\xEF\x00\xBB\x00\xBF\x00

Тогда то, что у вас есть, является случайным двойным кодированием. В этом случае вам необходимо посмотреть на программу, создаваемую файл, потому что он не является хорошо сформированным, наборный парсер будет правильно, а другие символы Unicode в файле, вероятно, также будут запутаны. Возможно, это делает что-то глупое, как сериализуйте документ в байтовую строку, затем отправляя его через цикл Bogus DeCode / Encode.

В любом случае, если вам нужно пропустить анализатор, пропустить проблемную байтовую последовательность, вам придется кормить его версией, которую вы вручную взломали, чтобы удалить этот префикс. Не зная, что вы саксериал (или даже на каком языке) трудно сказать, как это сделать.

Может быть, вы можете искать входной поток, прежде чем передавать его на парсера? Может быть, вы можете прочитать файл в байтовую строку и пройти, Shorn из исходных байтов, на парсера? Если ваш парсер не дает вам те параметры, вам придется загрузить файл в байтах, закрепить начало и снова сохранить его в новый файл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top