kapok

          垃圾桶,嘿嘿,我藏的這么深你們還能找到啊,真牛!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            455 隨筆 :: 0 文章 :: 76 評論 :: 0 Trackbacks
          http://rabbit8.blogchina.com/blog/article_144619.789425.html
          Java中的URLEncoder和URLDecoder類
          2005年 02月02日
          為了解決DisplayTag的問題,可能要使用這2個類了,本篇繼續分析URL編碼的問題

          以下內容是我翻譯的JDK的幫助。

          URLEncoder類:

          用于HTML的form中數據編碼的類。

          這個類包含將字符串轉換為application/x-www-form-urlencoded MIME 格式的靜態方法.

          如果想了解HTML的編碼細則,請參考HTML規范。

          編碼規則如下:

          字符"a"-"z","A"-"Z","0"-"9",".","-","*",和"_" 都不被編碼,維持原值,

          空格" "被轉換為加號"+"。

          所有其他的字符都被認為是不安全的,首先都根據指定的編碼scheme被轉換為1個或者多個字節。[憑什么認為其他的字符都是不安全的?看來這些規范的制訂者中沒有中國人呀!]

          然后每個字節都被表示成"%xy"格式的由3個字符組成的字符串,xy是字節的2位16進制的表達(xy is the two-digit hexadecimal representation of the byte),推薦的編碼scheme為UTF-8,然而,出于兼容性的考慮,如果沒有制定編碼的scheme,那么將使用當前操作系統的編碼的scheme。

          如:如果編碼scheme是UTF-8,

          "The string ü@foo-bar"將被轉換為"The+string+%C3%BC%40foo-bar" 。

          因為載UTF-8中字符ü被編碼成2個字節C3 (十六進制) 和BC (十六進制), 字符@被編碼成一個字節40 (十六進制)。

          起始于:JDK1.0

           

          這個類共有2個重載方法:

          public static String encode(String s,  String enc)  throws UnsupportedEncodingException。起始于:JDK1.4

          和即將被廢棄的方法:public static String encode(String s)。(因為這個方法的編碼的字符集依賴于程序運行的系統的默認的字符集)。

          第一個方法的作用是:根據指定的encode scheme 將一個字符串翻譯成application/x-www-form-urlencoded格式。

          注意: W3C推薦UTF-8。

          參數:

          s - 將要被翻譯的字符串。

          enc - 編碼用的character。

           返回:翻譯后的字符串。

          拋出異常: UnsupportedEncodingException - 如果不支持制定的編碼

          起始于:1.4

          另請參考:URLDecoder.decode(java.lang.String, java.lang.String)

           

          類URLDecoder的作用和URLEncoder的作用相反,方法類似,這里就不再贅述了。

                如果你想知道你的字符串被編碼后的值是什么樣,你可以打開www.baidu.com,然后輸入你要編碼后的數值,然后提交,你可以在地址欄看到你被編碼后的字符串,這個方法是Jason告訴我的,呵呵!

          如果想解決DisplayTag的問題,就要修改源代碼了,下一步就是讀源代碼,頭疼ing......

           

                                                                                                                     兔八哥

                                                                                                             2005-2-2下午16:30

          ltf_ty 于16 : 01 發表 已被瀏覽249次 評論(3) / 引用(0) 加入博采中心
               [回復]
             

          在百度提交:The string ü@foo-bar
          并不是您說的結果.

              匿名網友 | 2005年 02月05日 16 : 58


               回復 [回復]
             

          請看:http://rabbit8.blogchina.com/blog/article_144619.859489.html

              兔八哥 | 2005年 02月16日 08 : 51


               [回復]
             

          不錯不錯,附上實現代碼
          static String HEX_DIGITS =  "0123456789ABCDEF";
             protected static String urlEncode( byte[] rs )
             {
                 StringBuffer result = new StringBuffer();

                 // Does the URLEncoding.  We could use the java.net one, but
                 // it does not eat byte[]s.

                 for( int i = 0; i < rs.length; i++ )
                 {
                     char c = (char) rs[i];

                     switch( c )
                     {
                       case '_':
                       case '.':
                       case '*':
                       case '-':
                         result.append( c );
                         break;

                       case ' ':
                         result.append( '+' );
                         break;

                       default:
                         if( (c >= 'a' && c <= 'z') ││
                             (c >= 'A' && c <= 'Z') ││
                             (c >= '0' && c <= '9') )
                         {                    
                             result.append( c );
                         }
                         else
                         {
                             result.append( '%' );
                             result.append( HEX_DIGITS.charAt( (c & 0xF0) >> 4 ) );
                             result.append( HEX_DIGITS.charAt( c & 0x0F ) );
                         }
                     }

                 } // for

                 return result.toString();
             }

          posted on 2005-03-09 00:18 笨笨 閱讀(3121) 評論(1)  編輯  收藏 所屬分類: ALLAppFuse

          評論

          # re: Java中的URLEncoder和URLDecoder類 2015-07-07 13:54 sadf
          asdfsdf  回復  更多評論
            

          主站蜘蛛池模板: 青州市| 东莞市| 旺苍县| 上杭县| 苍山县| 平山县| 田林县| 昌黎县| 江源县| 兴城市| 项城市| 南宁市| 昭通市| 康定县| 无棣县| 邵武市| 黑龙江省| 卫辉市| 新民市| 科技| 砚山县| 阳信县| 金山区| 剑川县| 广昌县| 安平县| 咸宁市| 榆社县| 汉源县| 托克托县| 阿图什市| 遂宁市| 宾川县| 福建省| 海口市| 屏东市| 阿尔山市| 宜丰县| 罗定市| 石门县| 安丘市|