1. 程式人生 > >URL出現特殊符號,後臺無法正確獲取引數

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

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