编码XML以在C#中进行反序列化 [英] encoding xml for deserialization in c#
本文介绍了编码XML以在C#中进行反序列化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有几个要反序列化的xml文件。
I have several xml files which I want do deserialize.
var serializer = new XmlSerializer(typeof(Document));
var encoding = Encoding.GetEncoding("Windows-1252");
var sr = new StreamReader(current_file, encoding, true);
var reader = XmlReader.Create(sr);
var i = (Document)serializer.Deserialize(reader);
问题是文件具有不同的编码。 Windows-1252和 iso-8859-1。我该如何处理它们?
The problem is that the files have got different encodings. "Windows-1252" and "iso-8859-1". How can I deal with both of them?
推荐答案
尝试使用 FileStream
而不是 StreamReader
。 XmlSerializer
会在内部创建一个 XmlTextReader
来检测编码。
Try using a FileStream
instead of a StreamReader
. The XmlSerializer
internally will create an XmlTextReader
that will detect the encoding.
var serializer = new XmlSerializer(typeof(Document));
using (var fs = new FileStream(current_file, FileMode.Open))
{
var i = (Document)serializer.Deserialize(fs);
}
要检查使用哪种编码:
Element el1;
Encoding enc1;
using (var fs = new FileStream("Text1252.xml", FileMode.Open))
using (var reader = new XmlTextReader(fs))
{
reader.MoveToContent();
enc1 = reader.Encoding;
el1 = (Element)serializer.Deserialize(reader);
}
这篇关于编码XML以在C#中进行反序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文