Stream inputStream = new MemoryStream(Encoding.UTF8.GetBytes(responseXml));//如果我改Encoding.Unicode.GetBytes(responseXml),doc.Load(reader)就会报错。  名称不能以“.”字符(十六进制值 0x00)开头。 行 1,位置 2。
XmlReader reader = null;
reader = XmlReader.Create(inputStream);
doc.Load(reader);请问有没人知道是什么原因

解决方案 »

  1.   

    那你就按utf8读出来 ,写的时候再按unicode写就行了
      

  2.   


                //以一种特定的编码从字节流读取字符,必须要转化成utf-8读取才不能出乱码
                StreamReader sRead = new StreamReader(strFileName, Encoding.GetEncoding("utf-8"));
                //操作XML文档
                XmlDataDocument doc = new XmlDataDocument();            //将读取的字节流存到DataSet里面去
                doc.DataSet.ReadXml(sRead);
      

  3.   

    new StreamWriter(XmlFilePath, false, Encoding.UTF8); 
      

  4.   

    这个办法太老套了,应该直接读出的xml为string 类型,就不存在编码不一致的问题了。
    string sql = string.Format("select MetaXml from *** );
                cmd.CommandText = sql;
        
                SqlDataReader reader= cmd.ExecuteReader();  
                XmlDocument doc = new XmlDocument();
                if (reader.Read())
                {
                  
                    doc.LoadXml(reader.GetValue(0).ToString());
                }