随笔-348  评论-598  文章-0  trackbacks-0
        public static string GetEncodingString(string srcString)
        
{
            Encoding e8859Encode 
= Encoding.GetEncoding("iso-8859-1");
            Encoding srcEncode 
= Encoding.GetEncoding("gb2312");
            Encoding dstEncode 
= Encoding.Unicode;
            
byte[] srcBytes = e8859Encode.GetBytes(srcString);//用iso-8859-1去转换源字符串
            byte[] dstBytes = Encoding.Convert(srcEncode, dstEncode, srcBytes);//但是,是从gb2312转到unicode的
            char[] dstChars = new char[dstEncode.GetCharCount(dstBytes, 0, dstBytes.Length)];
            dstEncode.GetChars(dstBytes, 
0, dstBytes.Length, dstChars, 0);
            
return new string(dstChars);
            
        }
具体原因我推测是因为数据过来是ISO-8859-1,但.Net底层处理成了Gb2312了,所以需要通过两种编码转换成Unicode才能正常显示,听说在Java中只要new String(s.getBytes("ISO-8859-1"),"gb2312");就OK了。

---------------------------------------------------------
专注移动开发

Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2008-02-27 21:30 TiGERTiAN 阅读(3553) 评论(11)  编辑  收藏 所属分类: DotNetMapXtreme

评论:
# re: C#(.Net) 解决Informix中文乱码问题 2008-04-16 09:20 | Jiangnong
太好了! 这个问题困绕我多年了!  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2008-04-16 09:58 | TiGERTiAN
@Jiangnong
呵呵,我花了一个上午才找到解决办法,主要.net开发informix的不多,而且这个问题在2003上面又不存在,Xp底下有,所以网上的解决办法比较少  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2008-04-16 10:29 | JiangNong
我公司使用INFORMIX,在CSDK2.5以前版本没有这个问题,但2.5不支持.NET,只能通过ODBC来完成. 有您的指点就好多了! :)  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2008-04-16 10:51 | TiGERTiAN
@JiangNong
不客气,我们使用了2.7,没敢直接用.net的功能类库,也是用了ODBC,所以就会出这个问题。我的email是tigertian@gmail.com 有空交流下。
  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2008-04-21 16:21 | JiangNong
上文提到"乱码问题在2003上不存在,只有XP底下才有", 我怎么发现2003下也乱码啊?
我的EMAIL: jiangnong@zhej.picc.com.cn 欢迎交流.  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2009-06-24 07:01 | bbs.minyifei.cn
技术论坛,站长学习论坛:http://bbs.minyifei.cn  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2009-12-18 16:36 | zx
我的也是在用Sql语句查询出来的时候,就显示乱码。使用了以上提供的方法,也没有解决问题哦。对方服务器的环境是繁体的。  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2009-12-18 22:48 | TiGERTiAN
@zx
Encoding srcEncode = Encoding.GetEncoding("gb2312");
这行代码你根据繁体中文的编码修改了吗?  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2012-02-22 18:03 | 有难度,才够味!
这个可以解决显示乱码问题!那net 写入informix数据库数据呢?我写进去就是乱码写进去汉字就是问号@JiangNong
  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2012-02-24 18:47 | 有难度才够味
@TiGERTiAN
这个可以解决显示乱码问题!那net 写入informix数据库数据呢?我写进去就是乱码写进去汉字就是问号  回复  更多评论
  
# re: C#(.Net) 解决Informix中文乱码问题 2012-07-06 21:32 | ljz
CSDK 3.7 也有此问题,用楼主的方法确实可以。确实需要gb2312 过渡一下转换。谢谢楼主。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问