试了下
string   str1="璁╂垜浠湅鍒颁簡浠€涔";     
Encoding   UTF8   =   Encoding.UTF8;   
Encoding   gb2312   =   Encoding.GetEncoding("gb2312");  
string   str2   =   gb2312.GetString(Encoding.Convert(gb2312,UTF8,gb2312.GetByte(str1))); 
貌似不行的说 下面的朋友能给个实例吗?

解决方案 »

  1.   

    楼主的源和目标写反了
    string str2 = gb2312.GetString(Encoding.Convert(UTF8,gb2312,gb2312.GetBytes(str1)));结果是:让我们看到什对马?
      

  2.   

    string   str1="璁╂垜浠湅鍒颁簡浠€涔";     
    Encoding   UTF8   =   Encoding.UTF8;   
    Encoding   gb2312   =   Encoding.GetEncoding("gb2312");  
    byte[] buffer = gb2312.GetBytes(str1);
    str1 = UTF8.GetString(buffer);
      

  3.   

    这其实不是转换编码。
    这里的str1明显是解码的时候用错了编码方式,于是看到的是乱码。
    需要做的就是先还原,就是用解码所用的编码方式重新编码一次。
    然后用正确的编码方式重新解码。string   str1="璁╂垜浠湅鍒颁簡浠€涔";     
    Encoding   UTF8   =   Encoding.UTF8;   
    Encoding   gb2312   =   Encoding.GetEncoding("gb2312");  
    byte[] buffer = gb2312.GetBytes(str1);   //还原byte[]
    str1 = UTF8.GetString(buffer);   //重新解码,结果:"让我们看到了什"