шестнадцатеричный 0X19 является недопустимым символом - PullRequest
8 голосов
/ 25 августа 2009

SO

Я строю строку XML на основе значений из набора данных, используя XMLWriter.

Он правильно строит строку xml в соответствии с заданными мною настройками и условиями.

Если в наборе данных содержится более 1000 записей, и когда я пытаюсь создать строку xml, я получаю вышеуказанную ошибку. шестнадцатеричный 0X19 является недопустимым символом

Как мне пройти это. Я потратил около 6 часов, пытаясь выяснить.

Пожалуйста, помогите

Ответы [ 4 ]

13 голосов
/ 27 августа 2009

Проще говоря, вы не можете использовать этот символ в документе XML, независимо от того, как вы его разметили. Чтобы процитировать spec :

Char :: = # x9 | #xA | #xD | [# x20- # xD7FF] | [# xE000- # xFFFD] | [# X10000- # x10FFFF]

Грубо говоря, это означает, что до 0x20 вам разрешены только таб (0x09), перевод строки (0x0a) и возврат каретки (0x0d).

Обычный способ преодоления такого рода проблем - использование другой встроенной кодировки, например base64 .

1 голос
/ 25 августа 2009

Hex 0x19 - это контрольный код в последовательности ASCII - это Конец среды (EM) . Я не уверен, как он попадает в ваш поток данных. Если вы кодируете что-то, требующее более одного байта, в UTF-8, а затем рассматриваете это как однобайтовый набор символов или некоторую другую аналогичную последовательность кодирования / декодирования, вы можете увидеть второй байт последовательности UTF-8.

Вы транскодируете из одного набора символов в другой? и что такое входная и выходная кодировки?

0 голосов
/ 09 сентября 2009

Я видел похожие ошибки с недопустимыми символами в именах тегов и / или атрибутов XML. Например, если вы не включили пробел при создании xml вручную,

 <tagNameattributeName="attributeValue">

выдаст ошибку против намеченного

 <tagName attributeName="attributeValue">

Может быть стоит посмотреть.

0 голосов
/ 25 августа 2009

вместо этого попробуйте 0x19:)

шестнадцатеричное (основание 16) использует 16 символов от 0 до 9 и A B C D E F (или от a до f, что означает от 10 до 15)

0x - это просто префикс для числовых констант в языках программирования (например, C) и оболочках

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