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也不知道有没有朋友知道.
posted @   吴乐章,炎刘中学  阅读(4419)  评论(6编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示