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 |

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

不錯不錯,附上實現代碼 |