分享java帶來的快樂

          我喜歡java新東西

          最后一個(gè)奇數(shù)漢字出現(xiàn)亂碼解決方案

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

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

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

          下面引用Qieqie的一段代碼:

          Java代碼 復(fù)制代碼
          1. public static void main(String[] args) throws UnsupportedEncodingException {   
          2.     //給定某3個(gè)漢字   
          3.     String src = "你好啊";   
          4.     //String src = "一二三";   
          5.        
          6.     //瀏覽器進(jìn)行utf-8編碼,并傳送到服務(wù)器   
          7.     byte[] bytes1 = src.getBytes("utf-8");   
          8.     System.out.println(bytes1.length);//9   
          9.        
          10.     //tomcat以gbk方式解碼(這個(gè)片段的說明僅針對gbk處理漢字的情況)   
          11.     //如果一對漢字字節(jié)不符合gbk編碼規(guī)范,則每個(gè)字節(jié)使用'?'(ascii 63)代替   
          12.     //萬幸的話,只是最后一個(gè)(第9個(gè))字節(jié)因不能成對,變成問號(比如當(dāng)src="你好啊"時(shí))   
          13.     //不幸的話,中間某些字節(jié)就通不過gbk編碼規(guī)范出現(xiàn)'?'了(比如當(dāng)src="一二三"時(shí))   
          14.     //總之temp的最后一位必定是問號'?'   
          15.     String temp = new String(bytes1, "gbk");    
          16.        
          17.     //你的action中的代碼   
          18.     //由于以上的tomcat以gbk解釋utf-8不能成功   
          19.     //所以此時(shí)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.     //構(gòu)建出來的dest自然不是原先的src   
          34.     String dest = new String(bytes2, "utf-8");   
          35.     System.out.println(dest);   
          36.        
          37. }  

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

          評論

          # re: 最后一個(gè)奇數(shù)漢字出現(xiàn)亂碼解決方案 2014-05-05 10:10

          太熱太熱太熱  回復(fù)  更多評論   

          主站蜘蛛池模板: 洛隆县| 乌恰县| 文水县| 青铜峡市| 化德县| 海伦市| 旌德县| 新巴尔虎右旗| 紫阳县| 许昌市| 原平市| 宁陕县| 浦江县| 文安县| 平顶山市| 社旗县| 澎湖县| 即墨市| 张家川| 阿尔山市| 江北区| 凯里市| 龙胜| 保亭| 库尔勒市| 南宫市| 新巴尔虎左旗| 福鼎市| 大悟县| 大冶市| 诸城市| 大丰市| 平远县| 镇沅| 改则县| 南漳县| 金山区| 凉山| 临桂县| 阜新| 正阳县|