jialisoftw

          Java如何把javascript格式的hex轉換成Java格式的hex

          首先由于正常的ASCII碼表示的字符有限,于是產生了Unicode, Unicode使用的是16進制的格式來表示一個字符. 
          在javascript里Unicode的表示格式有2種: 1. '%uxxxx' 2. '\uxxxx'. 
          在Java里Unicode格式就一種'\u'. 
          Javascript函數escape轉義的字符使用的就是'%u',于是這個hex到了java里就認不出來了,就會出現亂碼. 
           
          Solution: 
               1. 不管是'%u'或者'\u',他們都是hex在某種語言里的表示格式,真正的hex number還是在后面的數字. 所以只要把數字取出來加以處理就好了. 
               2. 數字取出來以后是16進制的,char和Integer 之間是可以隱式轉換的,我們現在要做的就是把16進制的數字轉換成10進制的Integer,然后轉換成char,對應的字符就出來了. 
          /** 
                  * Decode given string. 
                  * Java just know the hex form '\u2122', not know how to translate other form hex. 
                  * If string include the javascript hex, like '%u2122'. This method will get the real hex number and cast it to right format char. 
                  * @param input_str the string to decode 
                  * @return an decode string 
                  */ 
                  public static String decodeFromHex(String input_str) { 
                        Pattern p = Pattern. compile( "%u([a-zA-Z0-9]{4})"); 
                        Matcher m = p.matcher(input_str); 
                        StringBuffer sb = new StringBuffer(); 
                         while (m.find()) { 
                          m.appendReplacement(sb, 
                              String. valueOf(( char) Integer. parseInt(m.group(1), 16))); 
                        } 
                        m.appendTail(sb); 
                         return sb.toString(); 
              }
          原文參考自站長網

          posted on 2013-01-12 17:20 飛豬一號 閱讀(315) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2013年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          常用鏈接

          留言簿

          隨筆檔案

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 贡山| 潢川县| 南投县| 泽库县| 偏关县| 临城县| 习水县| 莱西市| 盐山县| 宽城| 西峡县| 外汇| 荔浦县| 平度市| 驻马店市| 田阳县| 桂平市| 德格县| 白玉县| 新宁县| 荥经县| 涞水县| 五寨县| 岫岩| 饶阳县| 应城市| 溧阳市| 绵阳市| 东莞市| 图木舒克市| 靖边县| 漯河市| 寿阳县| 纳雍县| 界首市| 改则县| 涟源市| 开远市| 麟游县| 宽城| 墨玉县|