一 URLEncoder
HTML 格式編碼的實用工具類。該類包含了將 String 轉換爲 application/x-www-form-urlencoded MIME 格式的靜態方法。有關 HTML 格式編碼的更多信息,請參閱 HTML 規範。
對 String 編碼時,使用如下規則:
字母數字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不變。
特殊字符 "."、"-"、"*" 和 "_" 保持不變。
空格字符 " " 轉換爲一個加號 "+"。
全部其餘字符都是不安全的,所以首先使用一些編碼機制將它們轉換爲一個或多個字節。而後每一個字節用一個包含 3 個字符的字符串 "%xy" 表示,其中 xy 爲該字節的兩位十六進制表示形式。推薦的編碼機制是 UTF-8。可是,出於兼容性考慮,若是未指定一種編碼,則使用相應平臺的默認編碼。
例如,使用 UTF-8 編碼機制,字符串 "The string ü@foo-bar" 將轉換爲 "The+string+%C3%BC%40foo-bar",由於在 UTF-8 中,字符 ü 編碼爲兩個字節,C3 (十六進制)和 BC (十六進制),字符 @ 編碼爲一個字節 40 (十六進制)。
二 URLDecoder
該類包含了將 String 從 application/x-www-form-urlencoded MIME 格式解碼的靜態方法。
該轉換過程正好與 URLEncoder 類使用的過程相反。假定已編碼的字符串中的全部字符爲下列之一:"a" 到 "z"、"A" 到 "Z"、"0" 到 "9" 和 "-"、"_"、"." 以及 "*"。容許有 "%" 字符,可是將它解釋爲特殊轉義序列的開始。
轉換中使用如下規則:
字母數字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不變。
特殊字符 "."、"-"、"*" 和 "_" 保持不變。
加號 "+" 轉換爲空格字符 " "。
將把 "%xy" 格式序列視爲一個字節,其中 xy 爲 8 位的兩位十六進制表示形式。而後,全部連續包含一個或多個這些字節序列的子字符串,將被其編碼可生成這些連續字節的字符所代替。能夠指定對這些字符進行解碼的編碼機制,或者若是未指定的話,則使用平臺的默認編碼機制。
該解碼器處理非法字符串有兩種可能的方法。一種方法是無論該非法字符,另外一種方法是拋出 IllegalArgumentException 異常 java
簡單示例:web
try { String encodeStr = URLEncoder.encode("中國", "utf-8"); System.out.println("處理後:" + encodeStr); String decodeStr = URLDecoder.decode(encodeStr, "utf-8"); System.out.println("解碼:" + decodeStr); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }
運行結果:安全
處理後:%E4%B8%AD%E5%9B%BD 解碼:中國