XML-представление, отличное от юникода

#xml #string #unicode #character

Вопрос:

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

Напр.

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

Для

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

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

Ответ №1:

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

  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>amp;#x53D7;</value></xml>
 

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

Ответ №2:

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

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

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

Комментарии:

1. Это была опечатка с моей стороны. Исправил пример.