Bootstrap
本文主要介绍.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数据库中文乱码问题