Pergunta

Eu tenho xml onde alguns dos valores dos elementos são caracteres Unicode.É possível representar isso em uma codificação ANSI?

Por exemplo.

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

para

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

Desserializo o XML e tento serializá-lo usando XmlTextWriter especificando a codificação padrão (o padrão é Windows-1252).Todos os caracteres Unicode terminam como pontos de interrogação.Estou usando o VS 2008, C# 3.5

Foi útil?

Solução

Ok, eu testei com o seguinte código:

 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());

E corretamente escapou o caráter unicode assim:

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

Eu devo estar fazendo algo errado em algum outro lugar. Obrigado pela ajuda.

Outras dicas

Se eu entendi a pergunta, então sim. Você só precisa de um ; após a 27544:

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

Ou você está querendo saber como gerar esse XML por meio de programação? Se assim for, o que a linguagem / ambiente que você está trabalhando?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top