隨筆-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 閱讀(3578) 評論(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 過渡一下轉換。謝謝樓主。  回復  更多評論
            
          主站蜘蛛池模板: 聊城市| 噶尔县| 宜黄县| 肥西县| 周至县| 玉环县| 天长市| 都江堰市| 海盐县| 岳普湖县| 安阳市| 托克逊县| 长白| 乐平市| 桂东县| 德格县| 沿河| 东城区| 咸丰县| 瑞金市| 丰县| 涟水县| 高雄市| 弥勒县| 辰溪县| 开封县| 溧水县| 阿巴嘎旗| 长阳| 安徽省| 宝兴县| 辽中县| 米林县| 顺平县| 泉州市| 昭平县| 合作市| 定兴县| 弋阳县| 田林县| 绵竹市|