在线URL編碼解碼工具 UrlEncode編碼-UrlDecode解碼

????
轉換結果展示在下面

爲什麽要對URL進行編碼

  • URL中可能存在一些不安全字符保留字符,當他們直接放在Url中的時候,可能會引起解析程序的歧義。比如,在參數值中出現&字符會截斷參數。比如,URL中有個參數值是URL,傳輸的時候會出現錯誤。

  • URL中文的問題,編碼後會轉換爲英文。

保留字符

Url可以劃分成若幹個組件,協議、主機、路徑等。有一些字符(:/?#[]@)是用作分隔不同組件的。例如:冒號用于分隔協議和主機,/用于分隔主機和路徑,?用于分隔路徑和查詢參數,等等。

還有一些字符(!$&'()*+,;=)用于在每個組件中起到分隔作用的,如=用于表示查詢參數中的鍵值對,&符號用于分隔查詢多個鍵值對。當組件中的普通數據包含這些特殊字符時,需要對其進行編碼。

不安全字符

  • 空格:Url在傳輸的過程,或者用戶在排版的過程,或者文本處理程序在處理Url的過程,都有可能引入無關緊要的空格,或者將那些有意義的空格給去掉。
  • 引號以及<>:引號和尖括號通常用于在普通文本中起到分隔Url的作用。
  • #:通常用于表示書簽或者錨點。
  • %:百分號本身用作對不安全字符進行編碼時使用的特殊字符,因此本身需要編碼。
  • {}|^[]`~:某一些網關或者傳輸代理會篡改這些字符。

JavaScript处理URL編碼解碼的方法

encodeURI

如果你需要編碼整個URL,然後需要使用這個URL,那麽用encodeURI。

encodeURI('http://localhost/测试.js?type= uri encode');

返回結果:

"http://localhost/%E6%B5%8B%E8%AF%95.js?type=%20uri%20encode"

encodeURIComponent

encodeURIComponent比encodeURI编码的范围更大。实际例子来说,encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。

當你需要編碼URL中的參數的時候,那麽encodeURIComponent是最好方法。

encodeURIComponent('http://localhost/测试.js?type= uri encode');

返回結果:

"http%3A%2F%2Flocalhost%2F%E6%B5%8B%E8%AF%95.js%3Ftype%3D%20uri%20encode"

总结encodeURI 和 encodeURIComponent的区别

encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'

encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()'