分享java帶來的快樂

          我喜歡java新東西

          最后一個奇數漢字出現亂碼解決方案

          1.統一用UTF-8編碼,即Tomcat的server.xml、頁面、過濾器都用UTF-8
          2.
          請求參數,需要編碼

          <a href="newsAction?name=<%=java.net.URLEncoder.encode("表數據管理","UTF-8")%>"
          target="frameset">Xls表數據管理 </a>

          假如是java代碼的話直接寫java.net.URLEncoder.encode("測試嗎","UTF-8");

          下面引用Qieqie的一段代碼:

          Java代碼 復制代碼
          1. public static void main(String[] args) throws UnsupportedEncodingException {   
          2.     //給定某3個漢字   
          3.     String src = "你好啊";   
          4.     //String src = "一二三";   
          5.        
          6.     //瀏覽器進行utf-8編碼,并傳送到服務器   
          7.     byte[] bytes1 = src.getBytes("utf-8");   
          8.     System.out.println(bytes1.length);//9   
          9.        
          10.     //tomcat以gbk方式解碼(這個片段的說明僅針對gbk處理漢字的情況)   
          11.     //如果一對漢字字節不符合gbk編碼規范,則每個字節使用'?'(ascii 63)代替   
          12.     //萬幸的話,只是最后一個(第9個)字節因不能成對,變成問號(比如當src="你好啊"時)   
          13.     //不幸的話,中間某些字節就通不過gbk編碼規范出現'?'了(比如當src="一二三"時)   
          14.     //總之temp的最后一位必定是問號'?'   
          15.     String temp = new String(bytes1, "gbk");    
          16.        
          17.     //你的action中的代碼   
          18.     //由于以上的tomcat以gbk解釋utf-8不能成功   
          19.     //所以此時bytes2和bytes1不一樣   
          20.     byte[] bytes2 = temp.getBytes("gbk");   
          21.     System.out.println(bytes2.length);   
          22.     for (int i = 0; i < bytes1.length; i++) {   
          23.         System.out.print(bytes1[i] & 0xff);   
          24.         System.out.print("\t");   
          25.     }   
          26.     System.out.println();   
          27.     for (int i = 0; i < bytes2.length; i++) {   
          28.         System.out.print(bytes2[i] & 0xff);   
          29.         System.out.print("\t");   
          30.     }   
          31.     System.out.println();   
          32.   
          33.     //構建出來的dest自然不是原先的src   
          34.     String dest = new String(bytes2, "utf-8");   
          35.     System.out.println(dest);   
          36.        
          37. }  

          posted on 2010-08-05 21:57 強強 閱讀(2005) 評論(1)  編輯  收藏 所屬分類: Javaweb技巧

          評論

          # re: 最后一個奇數漢字出現亂碼解決方案 2014-05-05 10:10

          太熱太熱太熱  回復  更多評論   

          主站蜘蛛池模板: 开原市| 汶川县| 孟州市| 雷山县| 遂平县| 桐梓县| 扎赉特旗| 茂名市| 榆林市| 深泽县| 汤原县| 富裕县| 卢湾区| 陵川县| 恭城| 甘泉县| 崇左市| 临澧县| 浮梁县| 汪清县| 新营市| 铜川市| 高密市| 合作市| 安吉县| 安泽县| 长沙市| 彩票| 冷水江市| 千阳县| 东港市| 东山县| 工布江达县| 祁东县| 冷水江市| 海口市| 宣恩县| 色达县| 渝中区| 德格县| 万州区|