2012-06-07 42 views
1

这应该是一个简单的。XML序列化 - 为什么我不能更改编码?

我将C#对象的列表序列化为XML文档。一切都进行得很顺利但是我的XML文档具有ASCII编码(空格表示为X0020例如)和客户抱怨,所以我想编码改为UTF8像这样:

private void SerializeToXML(List<ResponseData> finalXML) 
{ 
    XmlSerializer serializer = new XmlSerializer(typeof(List<ResponseData>)); 
    TextWriter textWriter = new StreamWriter(txtFileLocation.Text, Encoding.UTF8); 
    serializer.Serialize(textWriter, finalXML); 
    textWriter.Close(); 
} 

智能感知告诉我这应该工作...

Intellisense

...但是当我尝试它在抱怨......

Error

我在做什么错?

感谢

+2

空间的代码在ASCII和UTF-8相同的(就像在0-127范围内的所有字符)......我在这里没有看到任何问题。我认为代码正在做它应该做的事情,并且你的客户是错误的(是的,我知道,客户永远是对的......) –

+0

Ecoding.UTF8在默认情况下在TextWriter中使用。没有必要通过ctor。 – Dennis

+0

这些值出现在哪里?你可以给样品XML吗? – user845279

回答

4

没有(字符串,编码)方法的StreamWriter的构造函数签名。

构造函数有一个(Stream,Encoding)签名。

+0

啊,树木和所有这些! Thankyou – JMK

+0

一双新鲜的眼睛常常解决我的问题。不用谢:) –

1

这里是工作就像一个魅力的一个片段:

using (Stream stream = File.Open(SerializeXmlFileName, FileMode.Create)) 
{ 
    using (TextWriter writer = new StreamWriter(stream, Encoding.UTF8)) 
    { 
     XmlSerializer xmlFormatter = new XmlSerializer(this.Member.GetType()); 
     xmlFormatter.Serialize(writer, this.Member); 
     writer.Close(); 
    } 

    stream.Close(); 
} 
相关问题