程序很简单:
DataSet ds=new DataSet();
ds.ReadXml(Server.MapPath("Email.xml"),XmlReadMode.Auto); 
MailsGrid.DataSource=ds;
MailsGrid.DataBind();Email.xml存放着从邮箱中收取的邮件信息,但是由于某些邮件中了病毒,是它的字符变成了乱码变成了16进制,从而导致了dataset不能读取
它的出错信息如下:
“”(十六进制值 0x1A)是无效的字符。 行 6,位置 135。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Xml.XmlException: “”(十六进制值 0x1A)是无效的字符。 行 6,位置 135。源错误: 
行 27:  // 在此处放置用户代码以初始化页面
行 28:  DataSet ds=new DataSet();
行 29:  ds.ReadXml(Server.MapPath("Email.xml"),XmlReadMode.Auto); 
行 30:  MailsGrid.DataSource=ds;
行 31:  MailsGrid.DataBind();

解决方案 »

  1.   

    Dim ds As New DataSet
            Dim fs As FileStream
            Dim reader As StreamReader
            Dim dv As DataView        fs = New FileStream(Server.MapPath("user.xml"), FileMode.Open, FileAccess.Read)
            reader = New StreamReader(fs)
            ds.ReadXml(reader)
            fs.Close()        dv = New DataView(ds.Tables(1))
            viewstate("dv") = ds
            DataGrid1.DataSource = dv
            DataGrid1.DataBind()
      

  2.   

    这样还是没用的啊,因为是dataset不能识别字符类型,就算到了filestream,它的出错字符还是存在的
    到dataset中调用,还是要出错的啊!