C# 转换编码 如何从utf-8转换到gb2312

2024-12-23 02:09:57
推荐回答(3个)
回答1:

/// 
        /// GB2312转换成UTF8
        /// 

        /// 
        /// 
        public static string gb2312_utf8(string text)
        {
            //声明字符集   
            System.Text.Encoding utf8, gb2312;
            //gb2312   
            gb2312 = System.Text.Encoding.GetEncoding("gb2312");
            //utf8   
            utf8 = System.Text.Encoding.GetEncoding("utf-8");
            byte[] gb;
            gb = gb2312.GetBytes(text);
            gb = System.Text.Encoding.Convert(gb2312, utf8, gb);
            //返回转换后的字符   
            return utf8.GetString(gb);
        }

        /// 
        /// UTF8转换成GB2312
        /// 

        /// 
        /// 
        public static string utf8_gb2312(string text)
        {
            //声明字符集   
            System.Text.Encoding utf8, gb2312;
            //utf8   
            utf8 = System.Text.Encoding.GetEncoding("utf-8");
            //gb2312   
            gb2312 = System.Text.Encoding.GetEncoding("gb2312");
            byte[] utf;
            utf = utf8.GetBytes(text);
            utf = System.Text.Encoding.Convert(utf8, gb2312, utf);
            //返回转换后的字符   
            return gb2312.GetString(utf);
        }

以上代码可以参考一下!

回答2:

这个是你导入数据库时就确定了的,
打开注册表,看你的oracle是什么编码 运行-regedit打开后HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE看看右边NLS_LANG改成SIMPLIFIED CHINESE_CHINA.ZHS16GBK
你没搞清关系,你数据库里存的是乱码,想读出来再转还没听说过转成功的,因为数据库的编码方式和c#的肯定有差异,在处理上能不能成功就看他们定义的时候是不是按同一协议做的。c#和sql server倒有可能成功,因为都是一家公司的。你可以用这个方法试试:System.Text.Encoding.GetEncoding("gb2312").GetBytes("你要转的字段")
最好从源转。建议重导数据库。

回答3:

因为你的乱码里面就有啊,转不过来就只有出现问号了