Java中的UrlDecoder 和 UrlEncoder_動力節(jié)點(diǎn)Java學(xué)院整理
一 URLEncoder
HTML 格式編碼的實用工具類。該類包含了將 String 轉(zhuǎn)換為 application/x-www-form-urlencoded MIME 格式的靜態(tài)方法。有關(guān) HTML 格式編碼的更多信息,請參閱 HTML 規(guī)范。
對 String 編碼時,使用以下規(guī)則:
字母數(shù)字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不變。
特殊字符 "."、"-"、"*" 和 "_" 保持不變。
空格字符 " " 轉(zhuǎn)換為一個加號 "+"。
所有其他字符都是不安全的,因此首先使用一些編碼機(jī)制將它們轉(zhuǎn)換為一個或多個字節(jié)。然后每個字節(jié)用一個包含 3 個字符的字符串 "%xy" 表示,其中 xy 為該字節(jié)的兩位十六進(jìn)制表示形式。推薦的編碼機(jī)制是 UTF-8。但是,出于兼容性考慮,如果未指定一種編碼,則使用相應(yīng)平臺的默認(rèn)編碼。
例如,使用 UTF-8 編碼機(jī)制,字符串 "The string ü@foo-bar" 將轉(zhuǎn)換為 "The+string+%C3%BC%40foo-bar",因為在 UTF-8 中,字符 ü 編碼為兩個字節(jié),C3 (十六進(jìn)制)和 BC (十六進(jìn)制),字符 @ 編碼為一個字節(jié) 40 (十六進(jìn)制)。
二 URLDecoder
該類包含了將 String 從 application/x-www-form-urlencoded MIME 格式解碼的靜態(tài)方法。
該轉(zhuǎn)換過程正好與 URLEncoder 類使用的過程相反。假定已編碼的字符串中的所有字符為下列之一:"a" 到 "z"、"A" 到 "Z"、"0" 到 "9" 和 "-"、"_"、"." 以及 "*"。允許有 "%" 字符,但是將它解釋為特殊轉(zhuǎn)義序列的開始。
轉(zhuǎn)換中使用以下規(guī)則:
字母數(shù)字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不變。
特殊字符 "."、"-"、"*" 和 "_" 保持不變。
加號 "+" 轉(zhuǎn)換為空格字符 " "。
將把 "%xy" 格式序列視為一個字節(jié),其中 xy 為 8 位的兩位十六進(jìn)制表示形式。然后,所有連續(xù)包含一個或多個這些字節(jié)序列的子字符串,將被其編碼可生成這些連續(xù)字節(jié)的字符所代替??梢灾付▽@些字符進(jìn)行解碼的編碼機(jī)制,或者如果未指定的話,則使用平臺的默認(rèn)編碼機(jī)制。
該解碼器處理非法字符串有兩種可能的方法。一種方法是不管該非法字符,另一種方法是拋出 IllegalArgumentException 異常
簡單示例:
Java代碼
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(); }
運(yùn)行結(jié)果:
Java代碼
處理后:%E4%B8%AD%E5%9B%BD 解碼:中國
相關(guān)文章
spring簡單MVC實現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加)
這篇文章主要介紹了spring簡單MVC實現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加),方法參數(shù)使用包括在無注解下獲取參數(shù),使用@RequestParam 獲取參數(shù)的方法,每種方法講解的非常詳細(xì),需要的朋友可以參考下2024-01-01Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文標(biāo)點(diǎn)輸入無效的完美解決方法
Mac OS X 下基于 Java 的程序會出現(xiàn)中文標(biāo)點(diǎn)輸入無效的問題,在中文輸入法狀態(tài),可以輸入中文字,但輸入中文標(biāo)點(diǎn)最后上去的是英文標(biāo)點(diǎn).這篇文章主要介紹了Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文標(biāo)點(diǎn)輸入無效的完美解決方法,需要的朋友可以參考下2016-10-10springboot+mongodb 實現(xiàn)按日期分組分頁查詢功能
這篇文章主要介紹了springboot+mongodb 實現(xiàn)按日期分組分頁查詢功能,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07Hadoop環(huán)境配置之hive環(huán)境配置詳解
這篇文章主要介紹了Hadoop環(huán)境配置之hive環(huán)境配置,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12mybatis plus實體類中字段映射mysql中的json格式方式
這篇文章主要介紹了mybatis plus實體類中字段映射mysql中的json格式方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08mybatis使用pageHelper插件進(jìn)行查詢分頁
這篇文章主要介紹了mybatis使用pageHelper插件進(jìn)行查詢分頁,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08淺談String、StringBuffer和StringBuilder之間的區(qū)別
這篇文章主要介紹了淺談String、StringBuffer和StringBuilder之間的區(qū)別,通過字面量方式為字符串賦值時,此時的字符串存儲在方法區(qū)的字符串常量池中,需要的朋友可以參考下2023-10-10Java常用正則表達(dá)式驗證類完整實例【郵箱、URL、IP、電話、身份證等】
這篇文章主要介紹了Java常用正則表達(dá)式驗證類,結(jié)合完整實例形式分析了Java針對郵箱、網(wǎng)址URL、IP地址、電話、身份證等正則驗證相關(guān)操作技巧,需要的朋友可以參考下2018-12-12