StreamWriter sw = new StreamWriter(ConfigurationManager.AppSettings["BoxZXmlFile"].ToString() + "product" + (i + 1).ToString() + ".xml", false, new UTF8Encoding(false));
                        sw.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
                        sw.WriteLine("<products>");
sw.WriteLine(string.Format("    <name>{0}</name>", "<![CDATA[" + System.Web.HttpUtility.HtmlEncode(RemoveHtml(TickPictureList[j].ProductName.ToString())) + "]]>"));
sw.WriteLine("</products>");
                        sw.Close();在我本地写出的XML的CDATA里一切正常
放到服务器跑就会出现乱码
乱码的几行数据里包含特殊符号全角(全角【半角)半角]-号和&符号
我迷茫了。。本地没有任何问题
CDATA难道还和操作系统环境有关联?
如果说CDATA中ASCII32以下乱码那我本地也应该乱码啊

解决方案 »

  1.   

    写XML文件时,开头要指明使用的字符集,读取的时候使用此字符集
    <?xml version="1.0" encoding="utf-8" ?> 
      

  2.   

    楼上的帅哥我都指明了。
    StreamWriter sw = new StreamWriter(ConfigurationManager.AppSettings["BoxZXmlFile"].ToString() + "product" + (i + 1).ToString() + ".xml", false, new UTF8Encoding(false));写sw.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");头
    读是那边指定要不含BDM的UTF-8应该也不会错
      

  3.   

    <?xml version="1.0" encoding="gb2312" ?>  
    试试看
      

  4.   

    需求方指定要UTF-8
    连UTF-8+BOM的都不行
    gb2312不可以