现在我的程序用的是默认的gb2312编码,但是数据库里用的是utf8,所以现在读取的数据显示出来都是乱码,有没有什么办法可以让程序默认使用utf8,因为如果单写编码转换然后在写到界面上的话工作量太大

解决方案 »

  1.   

    web中可以加入<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" fileEncoding="utf-8"/>,但是winform中呢
      

  2.   

    无论怎样,一定保证库里面是正常的其实可以在读库后,专门写个方法 UTF-8转gb2312
    //读到的数据是UTF-8编码,但是你要转换为GB2312编码,则可以参考以下代码: string utfinfo = "document.write(\"alert('aa你好么??');\");";
    string gb2312info = string.Empty;
    Encoding utf8 = Encoding.UTF8;
    Encoding gb2312 = Encoding.GetEncoding("gb2312");
    // Convert the string into a byte[].
    byte[] unicodeBytes = utf8.GetBytes(utfinfo);
    // Perform the conversion from one encoding to the other.
    byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);
    // Convert the new byte[] into a char[] and then into a string.
    // This is a slightly different approach to converting to illustrate
    // the use of GetCharCount/GetChars.
    char[] asciiChars = new char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
    gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
    gb2312info = new string(asciiChars);
      

  3.   

    可能是我没表述清楚.之前的程序中,没有对编码进行限定,现在数据库换成了mysql,而且编码是utf8,所以界面上现在显示的全是???如果要在界面显示处进行编码的话,工作量会很大.
      

  4.   

    可能是我没表述清楚.之前的程序中,没有对编码进行限定,现在数据库换成了mysql,而且编码是utf8,所以界面上现在显示的全是???如果要在界面显示处进行编码的话,工作量会很大.可能是你的前端页面编码的问题,浏览器会按照这个编码提交post请求。这个和C#真的没有关系。
      

  5.   

    可能是我没表述清楚.之前的程序中,没有对编码进行限定,现在数据库换成了mysql,而且编码是utf8,所以界面上现在显示的全是???如果要在界面显示处进行编码的话,工作量会很大.可能是你的前端页面编码的问题,浏览器会按照这个编码提交post请求。这个和C#真的没有关系。
    winform的程序