#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. Это была опечатка с моей стороны. Исправил пример.