Problema in serializzazione con encoding

mercoledì 22 dicembre 2010 - 09.34

stena Profilo | Junior Member

Serializzo una classe in buffer come da codice sotto riportato:

StringBuilder buffer = new StringBuilder();
TYPE_OGGETTO oggetto = ....;
System.Xml.Serialization.XmlSerializer serializer =
new System.Xml.Serialization.XmlSerializer(typeof(TYPE_OGGETTO));
serializer.Serialize(new System.IO.StringWriter(buffer), oggetto);

ottenendo questa codifica: <?xml version="1.0" encoding="utf-16"?>

Il problema e` che eseguendo la deserializzazione
System.Xml.Serialization.XmlSerializer serializer =
new System.Xml.Serialization.XmlSerializer(typeof(TYPE_OGGETTO));
oggetto = (TYPE_OGGETTO)serializer.Deserialize(stream); // stream e` un MemoryStream

ottengo un errore con l'encoding <?xml version="1.0" encoding="utf-16"?>
mente funziona correttamente se uso <?xml version="1.0" encoding="Windows-1252"?>

Volevo chiedere come serializzare utilizzando "encoding="Windows-1252""
oppure come deserializzare usando "encoding="utf-16""

grazie.

freeteo Profilo | Guru

Ciao,
potresti provare a cambiare la codifica di quando serializzi, con un codice di questo tipo:

string dest = "C:\\prova.xml"; TYPE_OGGETTO item = ... XmlSerializer ser = new XmlSerializer(typeof(TYPE_OGGETTO)); XmlTextWriter w = new XmlTextWriter(File.OpenWrite(dest),Encoding.UTF8); ser.Serialize(w,item);

nell'esempio viene serializzato direttamente su un file, ma potresti anche serializzarlo in memoria usando MemoryStream, oppure su un altro stream che ti interessa...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5