分享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 強強 閱讀(2019) 評論(1)  編輯  收藏 所屬分類: Javaweb技巧

          評論

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

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

          主站蜘蛛池模板: 乌兰察布市| 福泉市| 长泰县| 石渠县| 贵南县| 伊宁市| 武汉市| 鄢陵县| 盐边县| 山东| 宜州市| 建阳市| 正定县| 汝州市| 巴东县| 阜新市| 房产| 灵山县| 平邑县| 兴隆县| 深圳市| 探索| 新野县| 谢通门县| 巩义市| 敦煌市| 云和县| 定安县| 安平县| 温州市| 荔浦县| 额敏县| 磴口县| 确山县| 九龙坡区| 江华| 东乌珠穆沁旗| 武隆县| 绥宁县| 通城县| 余江县|