URL出現特殊符號,後台無法正確獲取引數

2021-08-30 10:48:24 字數 797 閱讀 5365

一般來說,url只能使用英文本母、阿拉伯數字和某些標點符號,不能使用其他文字和符號。url的編碼格式採用的是ascii碼,而不是unicode,這也就是說你不能在url中包含任何非ascii字元,例如希臘字母or中文。比如,世界上有英文本母的**,但是沒有希臘字母的**(讀作阿爾法-貝塔-伽瑪.com)。這是因為網路標準rfc 1738做了硬性規定:

只有字母和數字[0-9a-za-z]、一些特殊符號」$-_.+!*』(),」[不包括雙引號]、以及某些保留字,才可以不經過編碼直接用於url。

這意味著,如果url中有漢字,等特殊字元的時候,就必須編碼後使用。而+,空格,/,?,%,#,&,=,這些字元(不安全),當把他們直接放在url中的時候,可能會引起解析程式的歧義,因此也必須經過編碼才能使用。

將這些字元轉化成伺服器可以識別的字元,對應關係如下:

特殊字元

代表含義

替換內容

+url 中+號表示空格

%2b空格

url中的空格可以用+號或者編碼

%20/

分隔目錄和子目錄

%2f?

分隔實際的url和引數

%3f%

指定特殊字元

%25#

表示書籤

%23&

url 中指定的引數間的分隔符

%26url 中指定引數的值

%3d[ - ]

陣列[1,2,3]

%5b-%5d

參考文章: 

URL特殊符號處理

有些特殊符號在url中試不能直接傳遞的,如果要在url中傳遞這些符號,就需要使用它們的編碼 否則,將會出現亂碼。十六進製制值 1 url 中 號表示空格 2b 2 空格 url中的空格可以用 號或者編碼 20 3 分隔目錄和子目錄 2f 4 分隔實際的 url 和引數 3f 5 指定特殊字元 25 ...

URL特殊符號的處理

有些符號在url中是不能直接傳遞的,如果要在url中傳遞這些特殊符號,那麼就要使用他們的編碼了。編碼的格式為 加字元的ascii碼,即乙個百分號 後面跟對應字元的ascii 16進製制 碼值。例如 空格的編碼值是 20 如果不使用轉義字元,這些編碼就會當url中定義的特殊字元處理。下表中列出了一些u...

url中的特殊符號

最近寫http伺服器,解析請求中的url,發現有一些特殊字元 url 中 號表示空格 2b 空格 url中的空格可以用 號或者編碼 20 分隔目錄和子目錄 2f 分隔實際的 url 和引數 3f 指定特殊字元 25 表示書籤 23 url 中指定的引數間的分隔符 26 url 中指定引數的值 3d ...