Я пытаюсь преобразовать xml-файл с помощью xslt, но не могу отследить символ, который приводит к тому, что синтаксический анализатор задыхается от файла. во время преобразования я получаю эту ошибку:
myfile.xml:1: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xBC 0x29 0x20 0x69
g said premises on the West which does not encroach over one and one quarter (1
^
unable to parse myfile.xml
, когда я ищу в этом месте в разных редакторах, некоторые редакторы понимают код и отображают его визуализированный символ:
over one and one quarter (1 ¼)
и другиеРедакторы не отображают системный символ по умолчанию:
uarter (1 �)
Я могу вручную выполнить поиск файла в этом месте, и в случае этого символа определить, что должен быть ¼
, но я хотел бы иметь возможность найти и заменить эти символы до запуска преобразования.
Есть ли какой-либо способ определить, какой замене должна быть дана байтовая информация выше?
это пролог xml
<?xml version="1.0" encoding="UTF-8"?>
, когда я беру вышеупомянутую строку и создаю массив символов и массив байтов в Java, я получаю
char : ¼ bytes -68
, и если ясделайте тест:
if (c == '\u00BC') {
System.out.println("matched one quarter!");
}
тогда он совпадет ... есть ли просто способ зацикливаться в Java и выполнять поиск / замену таким образом?
поиск / замена должны быть выполнены до преобразования xslt, так как ошибка синтаксического анализа захлебнет процесс до его запуска;Я думаю, что общий вопрос, каков наилучший способ идентифицировать эти плохие символы и заменить их десятичными единицами? как показано выше, некоторые редакторы отображают символ, другие выдают ошибку и заменяют на '?'или какой-то другой системный символ.
Я думаю, что приведенный выше тест java char кажется лучшим решением на сегодняшний день.