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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 转换编码 如何从utf-8转换到gb2312相关的知识,希望对你有一定的参考价值。

数据库中的中文数据数据 有的是utf-8乱码
有的是gb2312的中文
现在要把数据库中的中文读出来
怎么才能把utf-8的乱码转换成gb2312的中文呢
我转了之后大部分都能转过来 就只有问号转不过来
“澶╂触甯效�娌藉尯瑙f斁璺?07鍙蜂笢鏂逛箣鐝?妤?”
转换完了变成
“天津市塘沽区解放?07号东方之??” 了
为什么还有问号?
那怎么能转过来呢?

我要的不是输入数据库时改过来
现在是从数据库中读出数据
有的是乱码,把乱码转换过来 怎么转换?

/// <summary>
        /// GB2312转换成UTF8
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        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);
        

        /// <summary>
        /// UTF8转换成GB2312
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        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);
        

以上代码可以参考一下!

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

批量更改文件编码格式 utf8到gb2312

一.查看文件编码

  file name;//可以显现文件的编码格式(有的系统不可以)

二.文件编码转换

  使用iconv转换,

  iconv -f encoding -t encoding inputfile;

例如:iconv -f utf-8 -t gb2312 file1;

用法:iconv [选项..]  [文件]

-f, 原始编码

-t,输出编码

信息:

-l,---list 列举系统所有安装的已知字符集

输出控制:

-c 从输出中忽略无效的字符

-o ---output  输出文件

 

实例:遍历目录下的所有文件,改变utf8编码到gb2312

for i in `find ./ -type f -name ‘*.txt‘`;

do

echo $i

echo ${i}.tmp

iconv -f utf-8 -t gb2312 $i>${i}.tmp

mv ${i}.tmp $i;

done

 

问题记录:

iconv转换失败,脚本主机没有暗转gb2312编码,只有gbk,导致一开始转化老是失败。

转载1:

  1. #!/bin/bash  
  2.   
  3. #1.变量定义  
  4. directory="/home/wzy/Downloads/execl"  
  5. f_encoding="utf-8"  
  6. t_encoding="gbk"  
  7.   
  8. #2.遍历子目录  
  9. for dir in `ls $directory`  
  10. do  
  11.     if [ -d $directory/$dir ]  
  12.     then  
  13.         #3.遍历子目录的文件  
  14.         for file in `ls $directory/$dir`  
  15.         do  
  16.             if [ -e $directory/$dir/$file ]  
  17.             then  
  18.                 #4.文件类型转换  
  19.                 iconv -f $f_encoding -t $t_encoding $directory/$dir/$file -o $directory/$dir/iconv.$file  
  20.                 #5.删除原始文件  
  21.                 if [ $? -eq 0 ]  
  22.                 then  
  23.                     rm $directory/$dir/$file  
  24.                 fi  
  25.             fi  
  26.         done  
  27.     fi  
  28. done 

以上是关于C# 转换编码 如何从utf-8转换到gb2312的主要内容,如果未能解决你的问题,请参考以下文章

如何把utf-8编码的转换为gb2312

vbscript中怎样把gb2312转换为UTF-8编码?

C# 将gb2312编码转换为字符串

怎样把utf-8编码网页 转换为gb2312

iconv 解决utf-8和gb2312编码转换问题

jmeter返回的参数中汉字怎么总是转换成问号