Проблема с обработкой «определенных» символов в тексте (в Java с использованием анализатора XML) - PullRequest
0 голосов
/ 16 мая 2009

У меня проблемы при обработке «определенных» символов в текстах с использованием DOM API в Java. Файлы в формате XML. В предыдущем посте мне рассказывали, какова ситуация с символом амперсанда (&) в XML (и еще несколькими символами, такими как <и>). Вот этот пост: Специальные символы в файлах XML - обработка с использованием DOM API

Однако, что я мог сделать с другими специальными символами в данных, такими как определенные буквы на немецком и французском языках? Например, у меня есть слово «фасад» в текстовом элементе документа XML. Однако место для буквы «ç» выглядит поврежденным: когда я открываю файл с помощью редактора vim в linux, оно выглядит так: «fa ^ Zade», когда я открываю его с помощью другого редактора в виде файла .txt или .xml, место для «ç» выглядит как маленький пустой прямоугольник (или пустое пространство). Это касается немецких умлаутов и других «специальных» символов других языков. Они создают проблемы, когда я пытаюсь обработать файлы с помощью парсера XML (я получаю ошибки синтаксического анализа). Я полагаю, это какая-то проблема кодирования. В заголовке XML-файла я использую encoding = "UTF-8". Я пытался изменить его (т. Е. На «Юникод» или другие), но это не помогает.

Как я могу сделать так, чтобы эти специальные символы распознавались? Должен ли я использовать некоторые специальные кодировки? Если бы это были всего два или три символа, которые я знал наверняка, я мог бы заменить их перед обработкой DOM API в Java так же, как я делал это с символом амперсанда (&) (я преобразовал & в &amp;) Однако их много, и потенциально может быть любой «специальный» символ. Проблема связана с тем, как данные были сохранены? Например, во время сохранения должна была использоваться специальная кодировка (?), Чтобы теперь символы распознавались (?). (Я не сохранил данные сам).
Спасибо.

Ответы [ 3 ]

1 голос
/ 16 мая 2009

Кажется, это не проблема XML, а проблема кодирования. XML может обрабатывать как UTF-8, так и Latin-1. Но вам нужно знать входную кодировку или НЕ использовать читатель, а входной поток с XML-объявлением с использованием правильного атрибута кодировки.

Вы уверены, что источник не поврежден? Какая это кодировка? Правильно ли указан атрибут кодировки XML в первой строке? ^ Z не похож на кодировку UTF-8!

1 голос
/ 16 мая 2009

Если бы это были всего два или три символа, которые я знал наверняка, я мог бы заменить их перед обработкой с помощью DOM API в Java, как я делал это с символом амперсанда (&) (я преобразовал & в & ), однако их много, и потенциально может быть любой «специальный» символ.

Вам не нужно предвидеть все возможные входные данные. Вместо этого просто преобразуйте каждый такой объект в NCR или в цифровую ссылку на символ. Например, &#x20AC; - это NCR для символа евро & # x20AC ;; это означает, что 20AC является шестнадцатеричной ссылкой Unicode для символа евро.

0 голосов
/ 16 мая 2009

encoding = "UTF-8", кажется, правильный путь, тогда вам не нужно относиться к любому из этих символов по-разному. Вы сказали: «В заголовке XML-файла я использую encoding =" UTF-8 "», но вы также записываете символьные данные как UTF-8?

В vim вы можете использовать "ga", я думаю, чтобы показать код символа под курсором, это должно помочь с отладкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...