在编程过程中经常会遇到Xml中的中文解析出错,成了乱码,原因是由于Xml文件的encoding编码方式不支持中文,比如encoding="ISO-8859-1",如果将encoding改成"utf-8"即可正常解析中文,主要过程如下:
/// <summary>
/// 转换Xml文件的encoding编码方式
/// </summary>
/// <param name="oldXmlFileName">转换前Xml文件路径</param>
/// <param name="newXmlFileName">转换后Xml文件路径</param>
public void ChangeEncoding(string oldXmlFileName,string newXmlFileName)
{
FileStream fs1 = new FileStream(oldXmlFileName, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs1, Encoding.Default);
string strXML = sr.ReadToEnd();
FileStream fs2 = new FileStream(newXmlFileName, FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs2);
//有人说设置sw的encoding方式
//sw.Encoding = Encoding.UTF8;
//实际上sw.Encoding是只读的
//这里不用设置,因为sw.Encoding的默认值就是UTF8
sw.Write(strXML);
sr.Close();
sw.Close();
fs1.Close();
fs2.Close();
}