编码转换

C# 单个转换
 /*    在使用MySql时会遇到中文乱码的问题就此写下面两个函数   
         *    在写入数据库和从数据库读出时将编码改变   
         *    author:alice   
         *    date        :2006/1/25   
      
*/
    
//写入数据库时进行转换   
    public string GB2312_ISO8859(string write)
    {
        
//声明字符集   
        System.Text.Encoding iso8859, gb2312;
        
//iso8859   
        iso8859 = System.Text.Encoding.GetEncoding("iso8859-1");
        
//国标2312   
        gb2312 = System.Text.Encoding.GetEncoding("gb2312");
        
byte[] gb;
        gb 
= gb2312.GetBytes(write);
        
//返回转换后的字符   
        return iso8859.GetString(gb);
    }

    
//读出时进行转换   
    public string ISO8859_GB2312(string read)
    {
        
//声明字符集   
        System.Text.Encoding iso8859, gb2312;
        
//iso8859   
        iso8859 = System.Text.Encoding.GetEncoding("iso8859-1");
        
//国标2312   
        gb2312 = System.Text.Encoding.GetEncoding("gb2312");
        
byte[] iso;
        iso 
= iso8859.GetBytes(read);
        
//返回转换后的字符   
        return gb2312.GetString(iso);
    }
利用DataSet批量转换
    //批量数据转换   
    
//其实就是将dataset的内容读出到xml文件,然后再输出   
    public DataSet ISO8859_GB2312(DataSet ds)
    {
        
string xml;
        xml 
= ds.GetXml();
        ds.Clear();
        
//声明字符集   
        System.Text.Encoding iso8859, gb2312;
        
//iso8859   
        iso8859 = System.Text.Encoding.GetEncoding("iso8859-1");
        
//国标2312   
        gb2312 = System.Text.Encoding.GetEncoding("gb2312");
        
byte[] bt;
        bt 
= iso8859.GetBytes(xml);
        xml 
= gb2312.GetString(bt);
        ds.ReadXml(
new System.IO.StringReader(xml));
        
return ds;
    }  

                 由于不同的操作系统对代码页支持不同,而Windows2000后,对于ASCII和Unicode都是内在支持的,所以它有这两个属性。对于其他字符集,要看你是否安装了,所以它提供了
System.Text.Encoding.GetEncoding(),来获取指定的字符集,我们的中文windows系统,就可以通过System.Text.Encoding.GetEncoding("GB2312")来得到中文字符集。当然你如果你要获取一个没装的字符集,他就要报错了。

原文地址:https://www.cnblogs.com/lee0201/p/1755047.html