【原文link】http://www.blogjava.net/ann/archive/2008/10/07/232875.html
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......
特殊特殊字符的含義
————————————————————————————
字符 特殊字符的含義 URL編碼
# 用來標誌特定的文檔位置 %23
% 對特殊字符進行編碼 %25
& 分隔不同的變量值對 %26
+ 在變量值中表示空格 %2B
/ 表示目錄路徑 %2F
= 用來連接鍵和值 %3D
? 表示查詢字符串的開始 %3F