public string UTF8ToGB2312(string str)
        {
            try
            {   
                Encoding utf8 = Encoding.GetEncoding(65001);
                Encoding gb2312 = Encoding.GetEncoding("gb2312");//Encoding.Default ,936
                byte[] temp = utf8.GetBytes(str);
                byte[] temp1 = Encoding.Convert(utf8, gb2312, temp);
                string result = gb2312.GetString(temp1);
                return result;
            }
            catch  (Exception ex)//(UnsupportedEncodingException ex)
            {
                MessageBox.Show(ex.ToString());
                return null;
            }
        }
        public string GB2312ToUTF8(string str)
        {
            try
            {
                Encoding uft8 = Encoding.GetEncoding(65001);
                Encoding gb2312 = Encoding.GetEncoding("gb2312");
                byte[] temp = gb2312.GetBytes(str);
                MessageBox.Show("gb2312的编码的字节个数:" + temp.Length);
                for (int i = 0; i < temp.Length; i++)
                {
                    MessageBox.Show(Convert.ToUInt16(temp[i]).ToString());
                }   
                byte[] temp1 = Encoding.Convert(gb2312, uft8, temp);
                MessageBox.Show("uft8的编码的字节个数:" + temp1.Length);
                for (int i = 0; i < temp1.Length; i++)
                {
                    MessageBox.Show(Convert.ToUInt16(temp1[i]).ToString());
                }              
                string result = uft8.GetString(temp1);
                return result;
            }
            catch  (Exception ex)//(UnsupportedEncodingException ex)
            {
                MessageBox.Show(ex.ToString());
                return null;
            }
        }

代码说明:

 Encoding utf8 = Encoding.GetEncoding(65001);//使用code page

 Encoding gb2312 = Encoding.GetEncoding("gb2312");//通过bodyname

获取字符编码字节序列:byte[] temp=utf8.GetBytes(str);

编码方式转换:byte[] temp1=Encoding.Convert(utf8, gb2312, temp);

获取编码的字符串:string str1=gb2312.GetString(temp1);

这样即完成了字符编码的转换。

Encoding.Default在 简体中文os中一般是gb2312格式。

 

C#如何改变字符串编码的更多相关文章

  1. C#.NET常见问题(FAQ)-如何改变字符串编码

    使用Encoding.Convert方法即可实现转换   更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   我的在线论坛: ...

  2. PHP字符串——编码与转义

    因为PHP程序经常与HTML页.Web地址(URL)以及数据库交互,所以PHP提供一些函数来帮助你处理这些类型的数据.HTML.Web页地址和数据库命令都是字符串,但是它们每个都要求不同的字符以不同的 ...

  3. 不得不知道的Python字符串编码相关的知识

    开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII character 'ascii' codec can't encode characters in posi ...

  4. 【转载】不得不知道的Python字符串编码相关的知识

    原文地址:http://www.cnblogs.com/Xjng/p/5093905.html 开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII charact ...

  5. java中字符串编码转换

    Java 正确的做字符串编码转换 字符串的内部表示? 字符串在java中统一用unicode表示( 即utf-16 LE) , 对于 String s = "你好哦!"; 如果源码 ...

  6. 【转载】Perl中字符串编码的处理

    在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...

  7. 使用自己的Python函数处理Protobuf中的字符串编码

    我目前所在的项目是一个老项目,里面的字符串编码有点乱,数据库中有些是GB2312,有些是UTF8:代码中有些是GBK,有些是UTF8,代码中转来转去,经常是不太清楚当前这个字符串是什么编码,由于是老项 ...

  8. 关于python中的字符串编码理解

    python2.x 中中间编码为unicode,一个字符串需要decode为unicode,再encode为其它编码格式(gbk.utf8等) 以gbk转utf8为例: s = "我是字符串 ...

  9. Swift3.0语言教程获取字符串编码与哈希地址

    Swift3.0语言教程获取字符串编码与哈希地址 Swift3.0语言教程获取字符串编码与哈希地址,以下将讲解字符串中其它内容的获取方法. 1.获取字符串编码 在NSString中可以使用2个属性获取 ...

随机推荐

  1. RHEL退出RHN

    清除原有数据 rm -rf /etc/sysconfig/rhn/rhn_systemidrm -rf /var/cache/yum/*yum clean all 加载刷新源 yum repolist ...

  2. Java Web 路径问题

    可能在做文件上传或者 图片加载,资源加载 时候用到文件相对服务器地址 System.out.println(request.getRemoteUser()); //客户端用户System.out.pr ...

  3. 装多个版本jdk后,eclipse无法正常启动

    需要在eclipse.ini中plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar后面指定jdk的路径. 指定jdk所在路径 -v ...

  4. scrapy递归下载网站

    # encoding: utf-8 import os import re import subprocess import sys import chardet import scrapy fro ...

  5. iOS_自定义毛玻璃效果

    http://www.2cto.com/kf/201408/329969.html 最终效果图: 关键代码: UIImage分类代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...

  6. c中结构体的4种定义

    1.常规的标准方式: 1 #include <stdio.h>  2   3 struct student{  4     int age;  5     float score;  6 ...

  7. trickle charging current is 0A ?

    Recently, I test trickle charging current of the smart phone. It's 0A. ?????????????????????? yes, i ...

  8. functools模块方法学习(1):partial

    函数的partial应用 典型的,函数在执行时,要带上所有必要的参数进行调用.然后,有时参数可以在函数被调用之前提前获知.这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调 ...

  9. C#发送POST,GET,DELETE请求API,并接受返回值

    发送POST请求 /// <summary> /// API发送POST请求 /// </summary> /// <param name="url" ...

  10. AC日记——The Street codechef March challenge 2014

    The Street 思路: 动态开节点线段树: 等差序列求和于取大,是两个独立的子问题: 所以,建两颗线段树分开维护: 求和:等差数列的首项和公差直接相加即可: 取大: 对于线段树每个节点储存一条斜 ...