проблема при разборе CDATA - PullRequest
0 голосов
/ 26 апреля 2011
   <text><![CDATA[øCu·l es tu principal reto, objetivo o problema?]]></text>

при разборе вышеуказанного тега происходит сбой. как разобрать CDATA

та же самая строка появляется в окнах, подобных этой ...

<text><![CDATA[¿Cuál es tu principal reto, objetivo o problema?]]></text>

из-за особых символов сбой анализатора.

почему они превращаются в специальные символы в Mac ..? как это решить?

1 Ответ

0 голосов
/ 26 апреля 2011

Ну, во-первых, строка, которую вы публикуете здесь, выглядит как-то не так с кодировкой. «ø» не является испанским символом.

Какой XML-парсер вы используете? Я предполагаю, что где-то в этой строке находится символ, возможно скрытый, или, возможно, это «ø», что приводит к краху вашего парсера.

Редактировать (в ответ на комментарий ОП)

Я попытаюсь угадать, что происходит, и надеюсь, что вы сможете использовать мои догадки, чтобы выяснить, что на самом деле происходит. Поэтому, когда вы создали XML-файл, вы использовали какой-то редактор. Этот редактор использовал определенную кодировку. Это означает, что он переводил символы на вашем экране в байты на вашем диске, используя определенное отображение символов в байты (он кодировал символы в байтах). Существует много разных кодировок, одна общая кодировка называется Latin-1. Итак, давайте предположим, что файл был закодирован с использованием Latin-1. После создания вы перенесли файл на другой компьютер, где открыли его в другом редакторе. Теперь, как новый редактор узнает кодировку файла? Ответ в том, что он, вероятно, пытался угадать кодировку. Теперь вот где возникает проблема: он угадал и интерпретировал байты, используя кодировку, отличную от Latin-1.

Пока ваш (искаженный) файл открыт в редакторе, попробуйте выбрать различные кодировки из меню. Тот, который правильно отображает все ваши специальные символы, вероятно, будет тем, который использовался при создании файла.

Редактировать 2 Но у меня остается другой вопрос: какой xml-парсер вы используете?

Редактировать 3

Хорошо, теперь, когда вы пишете "сбой", вы на самом деле имеете в виду сбой или он просто возвращается? Вы получаете сообщение об ошибке? Если да, то что? Можете ли вы сделать следующее:

Удалите забавные символы из этой строки и запустите ваш код на следующем:

<text><![CDATA[l es tu principal reto, objetivo o problema?]]></text>

Он все еще падает?

...