XML-представление не в юникоде - PullRequest
2 голосов
/ 17 сентября 2008

У меня есть XML, где некоторые значения элемента являются символами Unicode. Можно ли представить это в кодировке ANSI?

* 1003 Е.Г. *

<?xml version="1.0" encoding="utf-8"?>
<xml>
<value>受</value>
</xml>

до

<?xml version="1.0" encoding="Windows-1252"?>
<xml>
<value>&#27544;</value>
</xml>

Я десериализирую XML, а затем пытаюсь сериализовать его, используя XmlTextWriter, указав кодировку по умолчанию (по умолчанию Windows-1252). Все символы Юникода заканчиваются как вопросительные знаки. Я использую VS 2008, C # 3.5

Ответы [ 2 ]

5 голосов
/ 17 сентября 2008

Хорошо, я проверил это с помощью следующего кода:

 string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><xml><value>受</value></xml>";

 XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.Default };
 MemoryStream ms = new MemoryStream();
 using (XmlWriter writer = XmlTextWriter.Create(ms, settings))
      XElement.Parse(xml).WriteTo(writer);

 string value = Encoding.Default.GetString(ms.ToArray());

И он правильно экранировал символ Юникод, таким образом:

<?xml version="1.0" encoding="Windows-1252"?><xml><value>&#x53D7;</value></xml>

Я должен делать что-то не так в другом месте. Спасибо за помощь.

4 голосов
/ 17 сентября 2008

Если я понимаю вопрос, тогда да. Вам просто нужно ; после 27544:

<?xml version="1.0" encoding="Windows-1252"?>
<xml>
<value>&#27544;</value>
</xml>

Или вам интересно, как сгенерировать этот XML программно? Если да, то на каком языке / в какой среде вы работаете?

...