關於將URL中的特殊字元進行轉碼和解碼

2021-10-03 16:20:02 字數 1755 閱讀 6062

當前開發中,遇到特殊情況: 使用url進行跨頁面(跨域)傳值的時候,會出現某些帶特殊字元的url,在瀏覽器上被處理了,例如:

後端傳給前端的跳轉路徑:

瀏覽器跳轉時瀏覽器位址列的url變成:

注意:末尾處的#不見了

還有其他情況,如url中的引數有 "/" "&" "@" "&" 特殊字元時,url都會出現錯誤...

解決方案: 使用url的編碼和解碼 對 特殊字元進行處理

方法解釋

urlencoder.encode(string s, string enc) 

編碼s - 要轉換的 string。

enc - 所支援的字元編碼名稱。

urlencoder.decode(string s, string enc) 

解碼s - 要轉換的 string。

enc - 所支援的字元編碼名稱。

對 string 編碼時,使用以下規則:

例如,使用 utf-8 編碼機制,字串 "the string ü@foo-bar" 將轉換為 "the+string+%c3%bc%40foo-bar",因為在 utf-8 中,字元 ü 編碼為兩個位元組,c3 (十六進製制)和 bc (十六進製制),字元 @ 編碼為乙個位元組 40 (十六進製制)。

//

string str = "1qaz2wsx#";

try catch (unsupportedencodingexception e)

//顯示:

1qaz2wsx%23

1qaz2wsx#

後端特殊處理後,傳給前端的url變為:

%23
方法

解釋encodeuricomponent(str);

編碼str- 要轉換的 string。

decodeuricomponent(str);

解碼str - 要轉換的 string。

例如:

var password = decodeuricomponent("1qazwsx%23");

console.log(password);

//顯示結果 1qazwsx#

其他的變法解碼方式:

示例(摘自w3school):

1 escape()

輸出結果:

visit%20w3school%21

%3f%21%3d%28%29%23%25%26

2 encodeuri()

輸出結果:

/my%20first/

,/?:@&=+$#

對整個url進行編碼,而url的特定識別符號不會被轉碼。

3  encodeuricomponent()

輸出結果:

對url中的引數進行編碼,因為引數也是乙個url,如果不編碼會影響整個url的跳轉。

python中關於url中特殊字元的編碼和解碼

編碼 from urllib.parse import quote text quote text,utf 8 解碼 from urllib.parse import unquote text unquote text,utf 8 假如url 乙個ajax請求,url的字元 等需要轉碼才能傳遞 那麼...

URL中特殊字元處理

如果你的表單使用get方法提交,並且提交的引數中有 等特殊符的話,如果不做處理,在service端就會將 後面的作為另外乙個引數來看待。例如 表單的action為list.jsf?act go state 5 則提交時通過request.getparameter可以分別取得act和state的值。如...

url中特殊字元轉義

在前端向後端傳一些特定字元的時候有幾個特殊字元需要進行轉義 如果不進行編碼手動進行轉義可以對照下面 url中 號表示空格 2b 空格 url中的空格可以用 號或者編碼 20 url中分隔目錄和子目錄 2f url中分隔實際的url和引數 3f url中指定特殊字元 25 url中表示書籤 23 ur...