隨筆-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 閱讀(3579) 評論(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 過渡一下轉換。謝謝樓主。  回復  更多評論
            
          主站蜘蛛池模板: 五常市| 庄河市| 尉氏县| 都兰县| 黔江区| 海城市| 洱源县| 肃宁县| 开封县| 邵东县| 罗定市| 凤冈县| 武山县| 丹阳市| 大宁县| 二连浩特市| 卓资县| 固原市| 吉木乃县| 封丘县| 巢湖市| 枞阳县| 彰化市| 绥江县| 麻城市| 鄂州市| 皮山县| 淮阳县| 尖扎县| 桐柏县| 灵石县| 宁明县| 宕昌县| 淮阳县| 资中县| 丹凤县| 沙雅县| 南安市| 高青县| 炎陵县| 邵阳县|