1. 程式人生 > >URL傳遞引數包含特殊字元的處理

URL傳遞引數包含特殊字元的處理

url中包含?、=和&等特殊字元時,如果不進行編碼,後臺接收到引數的時候,會出現資訊丟失的問題,導致後臺接收的引數不全。

解決方法如下:

一、前端解決方案:通過js將url編碼

js對文字進行編碼涉及3個函式:escape,encodeURI,encodeURIComponent,相應3個解碼函式:

unescape,decodeURI,decodeURIComponent
1、   傳遞引數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字元截斷。
例如:<script language="javascript">document.write('<a href="

http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent ("http://cang.baidu.com/bruce42")+'">退出</a>');</script>
2、   進行url跳轉時可以整體使用encodeURI
例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");
3、   js使用資料時可以使用escape
例如:蒐藏中history紀錄。
4、   escape對0-255以外的unicode值進行編碼時輸出%u****格式,其它情況下escape,encodeURI

,encodeURIComponent編碼結果相同。最多使用的應為encodeURIComponent,它是將中文、韓文等特殊字元轉換成utf-8格式的url編碼,所以如果給後臺傳遞引數需要使用encodeURIComponent時需要後臺解碼對utf-8支援(form中的編碼方式和當前頁面編碼方式相同)
escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不編碼字元有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不編碼字元有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
(不編碼的字元對應的編碼為:!<%21>'<%27>(<%28>)<%29>*<%2a>-<%2d>.<%2e>_<%5f>~<%7e>)


二、如果使用的是自定義標籤方式,使用URLEncoder.encode(url, "UTF-8")解決

相關推薦

URL傳遞引數包含特殊字元處理

url中包含?、=和&等特殊字元時,如果不進行編碼,後臺接收到引數的時候,會出現資訊丟失的問題,導致後臺接收的引數不全。 解決方法如下: 一、前端解決方案:通過js將url編碼 js對文字進行編碼涉及3個函式:escape,encodeURI,encodeU

url包含特殊字元處理

encodeURIComponent(URIstring) :假定其引數是URI一部分(比如協議、主機名、路徑或查詢字串),因此 encodeURIComponent() 函式將轉義用於分隔 URI 各個部分的標點符號(? # 等)。

http請求資料包含特殊字元處理(java)

問題描述: android客戶端與後臺進行網路請求的時候,為了安全起見,我們採用的方法一般是加簽名,這個簽名可以是Base64加密過的,或是RSA加密過的,這些簽名的共同特點就是一大長串字串,裡面包含的有各種字元,比如 +,/n,?,/,$,& 等

url 傳遞引數(特殊字元) 解決方法

在做網頁的時候,偶爾會遇到url被截斷的情況,一般是出現在有引數的url中,比如www.baidu.com?a=1&b=2,有時候就會出現url只傳遞了www.baidu.com?a=1後邊的url被截斷了,出現這種情況一般最有效的解決方案是把&符號用%26替換,這樣ww

Ajax 以GET方式請求時,引數包含 "#" 特殊字元處理

現象 在使用 jquery 的ajax呼叫後臺的介面時,如果是get方式的話,當引數中含有”#”這些等對於URI而言有著特殊含義的符號時,發現“#”字元後面的資訊全被裁掉了。 比如: var url= "xxxx?name=" + "wz#aaa"

url 傳遞引數(特殊字元)解決方法

首先設定 apache 配置檔案, server.xml 在 port=8080 那一行中加上 URIEcoding=GBK 有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麼就要使用他們的編碼了。下表中列出了一些URL特殊符號及編碼 十六進位

前端傳遞引數包含+%等特殊字元的時候後臺獲取不到的問題

 public static String stringUncode(String param) {         if (param != null && !param.trim()

url 傳遞引數(特殊字元)解決方法

url 傳遞引數(特殊字元)解決方法  首先設定 apache 配置檔案, server.xml 在 port=8080 那一行中加上 URIEcoding=GBK 有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麼就要使用他們的編碼了。下表中列出了一些URL特殊符號及編碼

iOS url出現特殊字元處理 -- stringByAddingPercentEncodingWithAllowedCharacters

stringByAddingPercentEscapesUsingEncoding(只對 `#%^{}[]|\"<> 加空格共14個字元編碼,不包括”&?”等符號), ios9將淘汰,建議用 stringByAddingPercentEncodingWithAllowedChara

iOS URL特殊字元處理

一般來說我們呼叫webVIew的時候,只要給webVIew傳一個url,在網頁裡面就可以顯示網頁資訊。但是當我們傳的url比較麻煩或者帶文字元,帶引數的時候我們需要對特殊字元進行轉義。我們還可以用遍歷,正則等來把特殊字元給替換掉!!  有兩種方法:  一,使用NSS

URL傳參特殊字元處理

十六進位制值1. + URL 中+號表示空格 %2B2. 空格 URL中的空格可以用+號或者編碼 %203. / 分隔目錄和子目錄 %2F4. ? 分隔實際的 URL 和引數 %3F5. % 指定特殊字元 %256. # 表示書籤 %237. & URL 中指定的引數

java對URL中含有的特殊字元"&"的處理

1、問題描述:最近在做java匯出檔案到excel專案中遇到請求的URL包含引數&的時候,匯出的檔案裡面內容為空,什麼都沒有。 2、問題排查:首先我檢視專案執行的日誌,發現打印出來的錯誤資訊是空指標異常java.lang.NullPointException.然後發

JAVA中url特殊字元處理url轉碼解碼

在url中 , 只能使用url合法的字元 . 如果使用了非法字元來訪問某資源(如:+#等) , 就會導致資源訪問異常或失敗 . 同時原生url中也是不支援中文的 , 以百度為例 , 當你搜索了中文關鍵詞時 , 可以在url位址列中明顯的看出來中文被"編碼轉換了" . 本章暫

(android檔案下載)下載連結中包含特殊字元--空格,中文等,導致無法識別處理方案

今天在app測試時出現標題所示錯誤,導致無法正常重server端下載檔案; 通過檢視日誌,瞭解到是由於下載連結中出現空格、中文等特殊字元,導致連線地址不合法; 在網上也查看了很多描述相關問題解決方案的帖子,很有啟發-- 但是考慮到方便自己和大家,還是把問題和解決方案貼出來

url 傳遞參數(特殊字符)解決方法

tab htm 特殊 path str 不能 pla local 傳遞參數 有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麽就要使用他們的編碼了。下表中列出了一些URL特殊符號及編碼 十六進制值 1. + URL 中+號表示空

Abap 字串及特殊字元處理

1.字元轉ASCII   URL_ASCII_CODE_GET   特點:根據這個演算法可以中文轉ASCII DATA: char_cd(2) TYPE c. CALL FUNCTION 'URL_ASCII_CODE_GET'

urllib,url中連結包含漢字怎麼處理

使用urllib中的quote,和unquote方法將漢字編碼成gbk(2個百分號對應一個漢字)或者utf8(3個百分號對應一個漢字) 注意用%加密漢字時,漢字不能是Unicode編碼格式,否則會報錯(解決辦法:把Unicode編碼的中文轉換成str格式----->另一篇部落格短文有) &

MySql模糊查詢中特殊字元處理

MySql的LIKE查詢語句中,有一些特殊的字元,需要轉換後才能搜尋到結果: ':用於包裹搜尋條件,需轉為\'; %:用於代替任意數目的任意字元,需轉換為\%; _:用於代替一個任意字元,需轉換為\_; \:轉義符號,需轉換為\\\\。 以下是一些匹配的舉例。 SELECT * FROM `table`

sqoop匯入hive資料時對換行等特殊字元處理

使用場景:  公司大資料平臺ETL操作中,在使用sqoop將mysql中的資料抽取到hive中時,由於mysql庫中默寫欄位中會有換行符,導致資料存入hive後,條數增多(每個換行符會多出帶有null值得一條資料),導致統計資料不準確。 解決辦法: 利用一下兩個引數

字串內特殊字元處理‘#’‘@’

//問題描述 /* 輸入一個字串,裡面包含特殊字元‘@’‘#’,對每個字串作如下處理 1. 如果遇到‘@’,則刪除‘@’之前的所有字元(包括‘@’) 2. 如果遇到‘#’,則刪除‘#’之前的一個字元(