Проблема при разборе CDATA

   <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 ответ

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

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

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

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

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

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

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

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

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

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

Это все еще терпит крах?

Другие вопросы по тегам