JS 和 Java 中URL特殊字符編碼方式

最近遇到url特殊字符編碼的問題,在這里整理一下:

JavaScript

1. ?編碼?escape(String)

其中某些字符被替換成了十六進制的轉義序列。

解碼?unescape(String)

該函數的工作原理是這樣的:通過找到形式為 %xx 和 %uxxxx 的字符序列(x 表示十六進制的數字),用 Unicode 字符 \u00xx 和 \uxxxx 替換這樣的字符序列進行解碼。

*注釋:ECMAScript v3 反對使用該方法,應使用 decodeURI() 和 decodeURIComponent() 替代它。

2. 編碼 encodeURI(URIstring)

返回值:URIstring 的副本,其中的某些字符將被十六進制的轉義序列進行替換。

*如果 URI 組件中含有分隔符,比如 ? 和 #,則應當使用 encodeURIComponent() 方法分別對各組件進行編碼。

解碼 decodeURI(URIstring)

返回值:URIstring 的副本,其中的十六進制轉義序列將被它們表示的字符替換。

3. 編碼?encodeURIComponent(URIstring)

返回值:URIstring 的副本,其中的某些字符將被十六進制的轉義序列進行替換。

解碼?decodeURIComponent(URIstring)

返回值:URIstring 的副本,其中的十六進制轉義序列將被它們表示的字符替換。

*encodeURIComponent() 與 encodeURI() 區別

encodeURIComponent(URIstring) : 假定其參數是URI一部分(比如協議、主機名、路徑或查詢字符串),因此 encodeURIComponent() 函數將轉義用于分隔 URI 各個部分的標點符號(? # 等)。

encodeURI(URIstring) : 不會對URI中的分隔符編碼,如 ? # 等。

Java

編碼: Class URLEncoder

static String encode(String s);static String encode(String s, String enc);//enc 編碼方式 推薦使用UTF-8

解碼: Class URLDecoder

static String decode(String s);static String decode(String s, String enc);//enc 編碼方式 推薦使用UTF-8

*Java中的編碼解碼方式和JS中的encodeURIComponent()/decodeURIComponent()方法是前后臺通用的;兩者在處理字符串的方式是沒有區別的;

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容