隨筆-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去轉(zhuǎn)換源字符串
                      byte[] dstBytes = Encoding.Convert(srcEncode, dstEncode, srcBytes);//但是,是從gb2312轉(zhuǎn)到unicode的
                      char[] dstChars = new char[dstEncode.GetCharCount(dstBytes, 0, dstBytes.Length)];
                      dstEncode.GetChars(dstBytes, 
          0, dstBytes.Length, dstChars, 0);
                      
          return new string(dstChars);
                      
                  }
          具體原因我推測是因為數(shù)據(jù)過來是ISO-8859-1,但.Net底層處理成了Gb2312了,所以需要通過兩種編碼轉(zhuǎn)換成Unicode才能正常顯示,聽說在Java中只要new String(s.getBytes("ISO-8859-1"),"gb2312");就OK了。

          ---------------------------------------------------------
          專注移動開發(fā)

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2008-02-27 21:30 TiGERTiAN 閱讀(3579) 評論(11)  編輯  收藏 所屬分類: DotNetMapXtreme

          評論:
          # re: C#(.Net) 解決Informix中文亂碼問題 2008-04-16 09:20 | Jiangnong
          太好了! 這個問題困繞我多年了!  回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2008-04-16 09:58 | TiGERTiAN
          @Jiangnong
          呵呵,我花了一個上午才找到解決辦法,主要.net開發(fā)informix的不多,而且這個問題在2003上面又不存在,Xp底下有,所以網(wǎng)上的解決辦法比較少  回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2008-04-16 10:29 | JiangNong
          我公司使用INFORMIX,在CSDK2.5以前版本沒有這個問題,但2.5不支持.NET,只能通過ODBC來完成. 有您的指點就好多了! :)  回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2008-04-16 10:51 | TiGERTiAN
          @JiangNong
          不客氣,我們使用了2.7,沒敢直接用.net的功能類庫,也是用了ODBC,所以就會出這個問題。我的email是tigertian@gmail.com 有空交流下。
            回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2008-04-21 16:21 | JiangNong
          上文提到"亂碼問題在2003上不存在,只有XP底下才有", 我怎么發(fā)現(xiàn)2003下也亂碼啊?
          我的EMAIL: jiangnong@zhej.picc.com.cn 歡迎交流.  回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2009-06-24 07:01 | bbs.minyifei.cn
          技術(shù)論壇,站長學(xué)習(xí)論壇:http://bbs.minyifei.cn  回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2009-12-18 16:36 | zx
          我的也是在用Sql語句查詢出來的時候,就顯示亂碼。使用了以上提供的方法,也沒有解決問題哦。對方服務(wù)器的環(huán)境是繁體的。  回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2009-12-18 22:48 | TiGERTiAN
          @zx
          Encoding srcEncode = Encoding.GetEncoding("gb2312");
          這行代碼你根據(jù)繁體中文的編碼修改了嗎?  回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2012-02-22 18:03 | 有難度,才夠味!
          這個可以解決顯示亂碼問題!那net 寫入informix數(shù)據(jù)庫數(shù)據(jù)呢?我寫進(jìn)去就是亂碼寫進(jìn)去漢字就是問號@JiangNong
            回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2012-02-24 18:47 | 有難度才夠味
          @TiGERTiAN
          這個可以解決顯示亂碼問題!那net 寫入informix數(shù)據(jù)庫數(shù)據(jù)呢?我寫進(jìn)去就是亂碼寫進(jìn)去漢字就是問號  回復(fù)  更多評論
            
          # re: C#(.Net) 解決Informix中文亂碼問題 2012-07-06 21:32 | ljz
          CSDK 3.7 也有此問題,用樓主的方法確實可以。確實需要gb2312 過渡一下轉(zhuǎn)換。謝謝樓主。  回復(fù)  更多評論
            
          主站蜘蛛池模板: 慈利县| 石阡县| 永泰县| 成都市| 焦作市| 开阳县| 屯留县| 平原县| 卫辉市| 成都市| 碌曲县| 古交市| 昆山市| 临海市| 潍坊市| 土默特右旗| 屏山县| 清丰县| 建阳市| 金山区| 乳源| 丹棱县| 古丈县| 乌兰察布市| 巴林左旗| 棋牌| 汕头市| 阜平县| 九龙坡区| 石狮市| 县级市| 花垣县| 阿坝| 鹤岗市| 大足县| 彭山县| 汉阴县| 沙湾县| 南和县| 浮山县| 唐山市|