XmlTextAttribute и CDATA - PullRequest
       18

XmlTextAttribute и CDATA

1 голос
/ 15 декабря 2008

У нас есть часть нашего приложения, где наши пользователи могут создавать объекты, содержащие HTML, JavaScript и CSS, с помощью пользовательских компонентов Wysiwyg. Эти объекты в какой-то момент сериализуются, а затем десериализуются. Однако, поскольку наши пользователи / клиенты расположены по всему миру, они иногда вводят символы, которые вызывают претензии во время десериализации. Недавно я видел, как  появляется в сериализованном XML от пользователя из Китая, что позже вызвало проблемы, когда XML загружается через некоторый код Java с использованием MSXML2 (это не проблема в .NET и System.Xml, но это еще одна проблема). В настоящее время мы застряли с MSXML2, поэтому этот вопрос необходимо решать отдельно.

Предложение состоит в том, чтобы изменить некоторые поля для сериализации как CDATA, а не HtmlTextAttribute, как они есть сегодня.

Как я могу это сделать и повлияет ли это на данные, сериализованные до такого изменения?

1 Ответ

0 голосов
/ 23 декабря 2012

0x1D - это управляющий символ ASCII, который никто не использует, поэтому кажется, что для ввода данных китайского пользователя используется некоторая не-UTF-8 кодировка, а код, который сериализует его в XML, ошибочно предполагает, что входные байты являются кодовыми точками Unicode и сериализацию их как ссылки на символьные объекты).

Просто изменить его на CDATA не получится, потому что сериализатор все равно будет выводить mojibake.

Самое простое решение - просто убедиться, что клиентское приложение повсеместно использует UTF-8.

...