幕后推手TonyCoder

.NET/CAD二次开发
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# 转换Text和Xml文件的encoding编码方式

Posted on 2012-04-24 10:03  TonyCoder  阅读(1416)  评论(1)    收藏  举报

在编程过程中经常会遇到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();
        }