Ошибка обработки специальных символов - PullRequest
2 голосов
/ 23 июня 2011

Я создаю атомный XML-пакет как часть запроса службы REST. Однако возникает проблема, когда значение одного из тегов в XML содержит символ зарегистрированного товарного знака.

XML отправляется в виде «PUT» через WebRequest. Когда символ проблемы находится в XML, полный пакет XML не попадает на сервер. Пакет данных усекается, и я вижу сообщение об ошибке «Неожиданный EOF в начальном теге» на сервере.

Я замечаю на сервере, что первая часть запроса поступает (перед усечением), содержащая символ проблемы как «®». Я ожидал увидеть только «®».

Я думал, что мне нужно беспокоиться только об этих символах в XML:

Двойная цитата: "

Одиночная цитата: '

Меньше, чем: <</p>

Больше чем>

Амперсанд: &

Как я могу избежать или обработать мою строку, чтобы я мог отправить любой символ без проблем?

Ответы [ 2 ]

1 голос
/ 23 июня 2011

XML может обмануть вас таким образом. Дело не в том, что некоторые символы являются недопустимыми, а в том, что большой диапазон Unicode определен как действительный , и все, что вне этого, является verbotten. Хитрость в том, чтобы сделать это правильно без более сложной логики, заключается в использовании раздела CDATA .

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

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

Вы можете решить проблему, если вам необходимо экранировать символы, не входящие в ASCII, например, «знак зарегистрированного товарного знака» становится &#xae;.Однако это не должно быть необходимым.Было бы лучше устранить основную причину проблемы, заключающуюся в том, что создатель документа и его получатель имеют разные представления о его кодировании.В вашей конфигурации есть что-то, что вызывает это недопонимание, и у меня нет возможности узнать, что это может быть.

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