URL出現特殊符號,後臺無法正確獲取引數
阿新 • • 發佈:2018-12-18
Url出現了有+,空格,/,?,%,#,&,=等特殊符號的時候,可能在伺服器端無法獲得正確的引數值,抑或是造成不能正常下載檔案(作為Download Url時候),如何是好?解決辦法:就是需要將這些字元轉化成伺服器可以識別的字元;但是為何Url中有這些字元就會出現問題呢?這就得涉及到URL編碼與解碼問題了。
URL編碼與解碼
一般來說,URL只能使用英文字母、阿拉伯數字和某些標點符號,不能使用其他文字和符號。Url的編碼格式採用的是ASCII碼,而不是Unicode,這也就是說你不能在Url中包含任何非ASCII字元,例如希臘字母or中文。比如,世界上有英文字母的網址http://www.abc.com
http://www.aβγ.com
(讀作阿爾法-貝塔-伽瑪.com)。這是因為網路標準RFC 1738做了硬性規定:
只有字母和數字[0-9a-zA-Z]、一些特殊符號”$-_.+!*’(),”[不包括雙引號]、以及某些保留字,才可以不經過編碼直接用於URL。
這意味著,如果URL中有漢字,等特殊字元的時候,就必須編碼後使用。而+,空格,/,?,%,#,&,=,這些字元(不安全),當把他們直接放在Url中的時候,可能會引起解析程式的歧義,因此也必須經過編碼才能使用。
解決辦法
將這些字元轉化成伺服器可以識別的字元,對應關係如下:
特殊字元 | 代表含義 | 替換內容 |
---|---|---|
+ | URL 中+號表示空格 | %2B |
空格 | URL中的空格可以用+號或者編碼 | %20 |
/ | 分隔目錄和子目錄 | %2F |
? | 分隔實際的URL和引數 | %3F |
% | 指定特殊字元 | %25 |
# | 表示書籤 | %23 |
& | URL 中指定的引數間的分隔符 | %26 |
= | URL 中指定引數的值 | %3D |