C# 转换编码 如何从utf-8转换到gb2312
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 转换编码 如何从utf-8转换到gb2312相关的知识,希望对你有一定的参考价值。
数据库中的中文数据数据 有的是utf-8乱码
有的是gb2312的中文
现在要把数据库中的中文读出来
怎么才能把utf-8的乱码转换成gb2312的中文呢
我转了之后大部分都能转过来 就只有问号转不过来
“澶╂触甯效�娌藉尯瑙f斁璺?07鍙蜂笢鏂逛箣鐝?妤?”
转换完了变成
“天津市塘沽区解放?07号东方之??” 了
为什么还有问号?
那怎么能转过来呢?
我要的不是输入数据库时改过来
现在是从数据库中读出数据
有的是乱码,把乱码转换过来 怎么转换?
/// 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);
以上代码可以参考一下!
打开注册表,看你的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:
- #!/bin/bash
- #1.变量定义
- directory="/home/wzy/Downloads/execl"
- f_encoding="utf-8"
- t_encoding="gbk"
- #2.遍历子目录
- for dir in `ls $directory`
- do
- if [ -d $directory/$dir ]
- then
- #3.遍历子目录的文件
- for file in `ls $directory/$dir`
- do
- if [ -e $directory/$dir/$file ]
- then
- #4.文件类型转换
- iconv -f $f_encoding -t $t_encoding $directory/$dir/$file -o $directory/$dir/iconv.$file
- #5.删除原始文件
- if [ $? -eq 0 ]
- then
- rm $directory/$dir/$file
- fi
- fi
- done
- fi
- done
以上是关于C# 转换编码 如何从utf-8转换到gb2312的主要内容,如果未能解决你的问题,请参考以下文章