c#.net进行odbc连接sybase中文乱码问题
网上找了许久大多数都是去改变sybase的服务器字符集去解决些问题,可公司的sybase数据库是别的pb程序用的,不能改的,新的程序只是想查询一下数据所以只有进行字符集转换了
SELECT PROPERTY( 'CharSet' )
得到字符集cp936,转换如下Byte[] mybyte = System.Text.Encoding.GetEncoding(936).GetBytes("乱码字符串".ToCharArray());
得到结果还是乱码,想了很久也没明白,看来只能暴力一下了
StringBuilder pname = new StringBuilder();
foreach (EncodingInfo ei in Encoding.GetEncodings())
{
Byte[] mybyte = System.Text.Encoding.GetEncoding(ei.CodePage).GetBytes(("乱码字符串".ToCharArray());
pname.Append(ei.Name + "(" + ei.CodePage + "):" + System.Text.Encoding.GetEncoding("gb2312").GetString(mybyte, 0, mybyte.Length) + "\r\n");
}
MessageBox.Show(pname.ToString());
得到ibm850(850)与ibm858(858)可以正常显示中文,问题解决,为什么是850与858也不知道有没有朋友知道.
foreach (EncodingInfo ei in Encoding.GetEncodings())
{
Byte[] mybyte = System.Text.Encoding.GetEncoding(ei.CodePage).GetBytes(("乱码字符串".ToCharArray());
pname.Append(ei.Name + "(" + ei.CodePage + "):" + System.Text.Encoding.GetEncoding("gb2312").GetString(mybyte, 0, mybyte.Length) + "\r\n");
}
MessageBox.Show(pname.ToString());