开发手册 欢迎您!
软件开发者资料库

.NET(C#)中文乱码问题找到字符串正确的编码方法

本文主要介绍.NET(C#)中文字符串乱码时,不知道字符的编码,查找字符串正确的编码方式的方法代码。

1、查找字符串编码方式

string cTxt=dt.Rows[0][4].ToString();//乱码字符foreach (EncodingInfo ei in Encoding.GetEncodings())     {         Byte[] mybyte = System.Text.Encoding.GetEncoding(ei.CodePage).GetBytes(cTxt);         sb.Append(ei.Name + "(" + ei.CodePage + "):" + System.Text.Encoding.GetEncoding("gb2312").GetString(mybyte, 0, mybyte.Length) + "\r\n");     }Console.WriteLine(sb.ToString());//用系统中的所有编码方式,进行字符串解析,找到中文显示正常的编码方式

2、改变字符串编码方法

1)sybase数据CP850转成GB2312

    public static class CharConvert    {        public static string CP850ToGB2312(string str)        {            try            {                Encoding cp850 = Encoding.GetEncoding(850);                Encoding gb2312 = Encoding.GetEncoding("gb2312");//Encoding.Default ,936                byte[] temp = cp850.GetBytes(str);                return Encoding.GetEncoding("gb2312").GetString(temp, 0, temp.Length);            }            catch (Exception ex)//(UnsupportedEncodingException ex)            {                Console.Write(ex.Message);                return null;            }        }    }

2) 指定源编码方式转成ToGB2312

    public static class CharConvert    {        public static string ToGB2312(int codepage, string str)        {            try            {                Encoding cp850 = Encoding.GetEncoding(codepage);                Encoding gb2312 = Encoding.GetEncoding("gb2312");//Encoding.Default ,936                byte[] temp = cp850.GetBytes(str);                return Encoding.GetEncoding("gb2312").GetString(temp, 0, temp.Length);            }            catch (Exception ex)//(UnsupportedEncodingException ex)            {                Console.Write(ex.Message);                return null;            }        }    }

相关文档.NET Core Dapper使用Sybase数据库中文乱码问题