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


    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格式。

     

     

    更多教学视频和资料下载,欢迎关注以下信息:

    我的优酷空间:

    http://i.youku.com/acetaohai123

     

    我的在线论坛:

    http://csrobot.gz01.bdysite.com/

     

    问题交流:

    QQ:910358960

    邮箱:acetaohai123@163.com

     

     

  • 相关阅读:
    Android实例-Delphi在运行时更改Android屏幕旋转(IOS也支持,不过我可没有苹果机,测试不了)
    delphi实现电脑屏幕旋转(电脑屏幕,不是手机屏幕)
    教程-关于escape和URI之间的不同!
    在Delphi中URLEncode文件名的最佳方法是什么?
    Delphi实现js中的escape()编码和unescape()解码
    面向对象: 接口与对象生存周期,接口自动释放
    问题-Delphi在做窗体派生时提示Resource TForm2 not found
    问题-delphi idTCPserver-Socket error问题详解
    delphi 求两个时间差
    Delphi 解决StrToDateTime()不是有效日期类型的问题
  • 原文地址:https://www.cnblogs.com/acetaohai123/p/7587182.html
Copyright © 2020-2023  润新知