首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

纠结的转码有关问题

2012-12-17 
纠结的转码问题情况如下Dim b As Byte() System.Text.Encoding.GetEncoding(gbk).GetBytes(strSql)str

纠结的转码问题
情况如下


      
      Dim b As Byte() = System.Text.Encoding.GetEncoding("gbk").GetBytes(strSql)
      strSql = System.Text.Encoding.GetEncoding("cp850").GetString(b)
'必须将sql查询语句转为cp850编码,否则无法语句中无法使用中文
            Dim SybaseConn As New AseConnection("Data Source='0.0.0.0';UID='nitty';PWD='sa';Database='abc';")
            Dim SybaseCom As New AseCommand(strSql, SybaseConn)
'数据库连接字符串
            Dim SybaseDA As New AseDataAdapter(SybaseCom)
            Dim Ds As New DataSet
            SybaseConn.Open()
            SybaseDA.Fill(Ds)
'正常的填充DATASET
            GridView1.DataSource = Ds.Tables(0)
            GridView1.DataBind()
'绑定


最后情况是GridView1里的中全是乱码,必须转码。那么请问,我应该在那一步转码呢?
[最优解释]

     SybaseConn.Open()
            SybaseDA.Fill(DS)

            DT.Columns.Add("编号", GetType(String))
            DT.Columns.Add("付款单位", GetType(String))
            DT.Columns.Add("金额", GetType(Double))
            DT.Columns.Add("备注", GetType(String))
            DT.Columns.Add("付款银行", GetType(String))
            DT.Columns.Add("付款账号", GetType(String))
            DT.Columns.Add("时间", GetType(Date))

            For i As Integer = 1 To DS.Tables(0).Rows.Count
                Dim NDR As DataRow = DT.NewRow
                For c As Integer = 0 To 6
                    NDR(c) = GetEncoding("gbk").GetString(GetEncoding("cp850").GetBytes(DS.Tables(0).Rows(i - 1).Item(c)))
                Next
                DT.Rows.Add(NDR)
            Next

            GridView1.DataSource = DT
            GridView1.DataBind()


从数据库取出值以后进行转码,然后重新放回到datatable里让GridView绑定。
------其他解决方案--------------------


GridView1出现乱码的那一列   用转码转过来
[其他解释]
原来打算在GridView1_RowDataBound里面写,结果发现是不可能的。
因为e.Row.Cells(1).Text里面读出来的值已经混入了奇怪的东西了,将其转码只会得到另一种乱码
[其他解释]
markmark
[其他解释]

引用:
原来打算在GridView1_RowDataBound里面写,结果发现是不可能的。
因为e.Row.Cells(1).Text里面读出来的值已经混入了奇怪的东西了,将其转码只会得到另一种乱码


看看你数据库查出来的是什么样的?
[其他解释]


查出来是这样

    Protected Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim b As Byte() = System.Text.Encoding.GetEncoding("cp850").GetBytes(e.Row.Cells(1).Text)
            e.Row.Cells(1).Text = System.Text.Encoding.GetEncoding("gbk").GetString(b)
        End If
    End Sub


如果这么转的话,还是乱码
[其他解释]
有人帮帮忙吗

热点排行