Что заставляет мой XML ломаться? - PullRequest
4 голосов
/ 24 июня 2009

У меня есть следующий XML-код.

<firstname>
 <default length="6">Örwin</default>
 <short>Örwin</short>
 <shorter>Örwin</shorter>
 <shortest>�.</shortest>
</firstname>

Почему содержимое «самого короткого» узла разрывается? Это должно быть простое «Ö» вместо утомительного . XML имеет кодировку UTF-8, и функция, которая обрабатывает выходные данные этого узла, также записывает содержимое «short» и «short». Где ясно видно «Ö».

Ответы [ 2 ]

17 голосов
/ 24 июня 2009

Я предполагаю, что XML не должным образом в кодировке UTF-8. Пожалуйста, покажите байтов в элементе <shortest> в необработанном файле ... Я подозреваю, вы обнаружите, что они не являются правильно закодированными символами. Если бы вы могли показать короткую, но полную программу, которая генерирует этот XML из правильного ввода, это было бы очень полезно. (Желательно сказать, что это за платформа:)

РЕДАКТИРОВАТЬ: В этом файле происходит нечто очень странное. Вот шестнадцатеричные значения для «коротких» и «самых коротких» значений:

Короче: C3 96 72 77 69 63

Самый короткий: EF BF BD 2E

Теперь "C3 96" - это действительная кодировка UTF-8 для U + 00D6, которая, как вы хотите, является "латинской заглавной буквой O с диарезом".

Однако, EF BF BD - это кодировка UTF-8 для U + FFFD, которая является «символом замены» - определенно не , что вы хотите. (2E - это просто точка ASCII.)

Итак, это действительно допустимый UTF-8 - но он не содержит символов, которые вы хотите. Опять же, вы должны изучить, что создало файл ...

0 голосов
/ 24 июня 2009

XML анализирует элементы внутри тегов, так как любой элемент может содержать вложенные элементы. Таким образом, ваше "ö" может нарушить синтаксический анализ.

Поместите свои данные в тег CDATA, например: http://www.w3schools.com/XML/xml_cdata.asp

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