XmlTextAttribute и CDATA

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

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

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

15.12.2008 14:02:37
Вы указываете кодировку и язык в декларации документа?
Martijn Laarman 17.12.2008 22:44:22
1 ОТВЕТ

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

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

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

0
22.12.2012 21:37:13