asp.net gridview绑定en_US.819数据库乱码
asp.net gridview绑定en_US.819数据库乱码
不用gridview时,通过编码转换中文不会有乱码,gridview却试了多次仍然有乱码。
              using IBM.Data.Informix;
             this.GridViewSQLResult.DataSource = cmd.ExecuteReader();
             this.GridViewSQLResult.DataBind();           
     protected void GridViewSQLResult_DataBound(object sender, EventArgs e)
     {
         int cols = this.GridViewSQLResult.HeaderRow.Cells.Count;
         for (int i = 0; i < this.GridViewSQLResult.Rows.Count; i++)
         {
             GridViewRow row = this.GridViewSQLResult.Rows[i];
             for (int col = 0; col < cols; col++)
             {
                 this.txtSQLResult.Text = this.txtSQLResult.Text +  
                 Environment.NewLine + row.Cells[col].Text;
                 row.Cells[col].Text = GetEncodingString_Request(row.Cells
                 [col].Text);
                 this.txtSQLResult.Text = this.txtSQLResult.Text +  
                 Environment.NewLine + row.Cells[col].Text;
             }
         }
     }
     /*iso-8859-1->gb2312*/
     /*具体原因我推测是因为数据过来是ISO-8859-1,但.Net地层格处理成了Gb2312了,
      * 所以需要通过两种编码转换成Unicode才能正常显示,
      * 听说在Java中只要new String(s.getBytes("ISO-8859-1"),"gb2312");就OK了。 */
     public static string GetEncodingString(string srcString)
     {
         Encoding e8859Encode = Encoding.GetEncoding("iso-8859-1");
         Encoding gb2312Encode = Encoding.GetEncoding("gb2312");
         Encoding UnicodeEncode = Encoding.Unicode;
         byte[] srcBytes = e8859Encode.GetBytes(srcString);//用iso-8859-1去转换源字符串:源
         byte[] dstBytes = Encoding.Convert(gb2312Encode, UnicodeEncode, srcBytes);//但是,是从gb2312转到unicode的
         char[] dstChars = new char[UnicodeEncode.GetCharCount(dstBytes, 0, dstBytes.Length)];
         UnicodeEncode.GetChars(dstBytes, 0, dstBytes.Length, dstChars, 0);
         return new string(dstChars);
     }
------解决方案--------------------哎  这么长  要看哈哦
------解决方案--------------------
SQL查询分析器,查出来是乱码?那就和.net 没有关系了阿
如果只是 .net出现乱码,可以尝试将aspx叶面保存为UTF-8,web.config的编码格式也设为UTF-8看看吧
------解决方案--------------------
可以试试楼上的
------解决方案--------------------
怎么这么乱啊。。
------解决方案--------------------
所有的数据存入byte数组,即使是读取出来的时候也统一放入byte数组再进行读取,我估计是你转换成gb2312的时候,输出显示的时候出的错,所以即便是gb2312也再次转换存入byte数组输出
------解决方案--------------------
不懂   UP~~~
------解决方案--------------------
------解决方案--------------------up