url 傳遞引數(特殊字元)解決方法
url 傳遞引數(特殊字元)解決方法
首先設定 apache 配置檔案, server.xml 在 port=8080 那一行中加上 URIEcoding=GBK
有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麼就要使用他們的編碼了。下表中列出了一些URL特殊符號及編碼
十六進位制值
1. + URL 中+號表示空格 +
2. 空格 URL中的空格可以用+號或者編碼
3. / 分隔目錄和子目錄 /
4. ? 分隔實際的 URL 和引數 ?
5. % 指定特殊字元 %
6. # 表示書籤 #
7. & URL 中指定的引數間的分隔符 &
8. = URL 中指定引數的值 =
解決的方法:
replace() 方法如果直接用str.replace("-","!") 只會替換第一個匹配的字元.
而str.replace(/\-/g,"!")則可以替換掉全部匹配的字元(g為全域性標誌)。
replace()
js中替換字元變數如下:
data2=data2.replace(/\%/g,"%");
data2=data2.replace(/\#/g,"#");
data2=data2.replace(/\&/g,"&");
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
其他一些資料。。。僅供參考。。。
在使用url進行引數傳遞時,經常會傳遞一些中文名(或含有特殊字元)的引數或URL地址,在後臺處理時會發生轉換錯誤。在有些傳遞頁面使用
GB2312,而在接收頁面使用UTF8,這樣接收到的引數就可能會與原來發生不一致。使用伺服器端的urlEncode函式編碼的URL,與使用客戶端java的
encodeURI函式編碼的URL,結果就不一樣。
java對文字進行編碼涉及3個函式:escape,encodeURI,encodeURIComponent,相應3個解碼函式:,decodeURI,decodeURIComponent
java中的編碼方法:
escape() 方法:採用ISO
Latin字符集對指定的字串進行編碼。所有的空格符、標點符號、特殊字元以及其他非ASCII字元都將被轉化成%xx格式的
字元編碼(xx等於該字元在字符集表裡面的編碼的16進位制數字)。比如,空格符對應的編碼是 。方法與此相反。不會被此方法編碼的字
符: @ * / +
encodeURI()方法:把URI字串採用UTF-8編碼格式轉化成escape格式的字串。不會被此方法編碼的字元:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent ()方法:把URI字串採用UTF-8編碼格式轉化成escape格式的字串。與encodeURI()相比,這個方法將對更多的字元進行編碼
,比如 / 等字元。所以如果字串裡面包含了URI的幾個部分的話,不能用這個方法來進行編碼,否則 / 字元被編碼之後URL將顯示錯誤。不會被此
方法編碼的字元:! * ( )
因此,對於中文字串來說,如果不希望把字串編碼格式轉化成UTF-8格式的(比如原頁面和目標頁面的charset是一致的時候),只需要使用
escape。如果你的頁面是GB2312或者其他的編碼,而接受引數的頁面是UTF-8編碼的,就要採用encodeURI或者 encodeURIComponent。
另外,encodeURI/encodeURIComponent是在java1.5之後引進的,escape則在java1.0版本就有。
1、
傳遞引數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字元截斷。
2、 進行url跳轉時可以整體使用encodeURI
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
以下是url中可能用到的特殊字元及在url中的經過編碼後的值:
字元
特殊字元的含義
URL編碼
#
用來標誌特定的文件位置
#
%
對特殊字元進行編碼
%
&
分隔不同的變數值對
&
+
在變數值中表示空格
+
/
表示目錄路徑
/
\
表示目錄路徑
\
=
用來連線鍵和值
=
?
表示查詢字串的開始
?
空格
空格
.
句號
.
:
冒號
:
專案中發現,直接對url中的引數部分做encodeURI()編碼轉換,後臺servlet通過getParamater()獲取時,不需要轉換可以直接獲取到正確的值
。說明:引數沒有用到中文,框架用的是struts框架。
相關推薦
url 傳遞引數(特殊字元) 解決方法
在做網頁的時候,偶爾會遇到url被截斷的情況,一般是出現在有引數的url中,比如www.baidu.com?a=1&b=2,有時候就會出現url只傳遞了www.baidu.com?a=1後邊的url被截斷了,出現這種情況一般最有效的解決方案是把&符號用%26替換,這樣ww
url 傳遞引數(特殊字元)解決方法
首先設定 apache 配置檔案, server.xml 在 port=8080 那一行中加上 URIEcoding=GBK 有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麼就要使用他們的編碼了。下表中列出了一些URL特殊符號及編碼 十六進位
url 傳遞引數(特殊字元)解決方法
url 傳遞引數(特殊字元)解決方法 首先設定 apache 配置檔案, server.xml 在 port=8080 那一行中加上 URIEcoding=GBK 有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麼就要使用他們的編碼了。下表中列出了一些URL特殊符號及編碼
android 網路請求url中有特殊字元解決方法
經常在get網路請求中有特殊字元,系統編碼 自動轉譯這些特殊字元有些字元在URL中具有特殊含義,基本編碼規則如下:特殊含義 十六進位制值1.+ 表示空格(在 URL 中不能使用空格) %202./ 分隔目錄和子目錄 %2F3.? 分隔實際的 URL 和引數 %3F4.% 指定
Django筆記 通過URL傳遞引數的4種方法 + 補充
【轉自ian的個人部落格】 和 補充 感謝ian的總結! 1. 無引數情況 配置URL及其檢視如下: (r’^hello/$’, hello) def hello(request): return HttpResponse("Hell
Ajax中Put和Delete請求傳遞引數無效的解決方法(Restful風格
在使用Ajax實現Restful的時候,有時候會出現無法Put、Delete請求引數無法傳遞到程式中的尷尬情況,此時我們可以有兩種解決方案:1、使用地址重寫的方法傳遞引數。2、配置web.xml專案環境。 測試的程式為: @RequestMapping(value =
Ajax中Put和Delete請求傳遞引數無效的解決方法(Restful風格)
開發環境:Tomcat9.0 在使用Ajax實現Restful的時候,有時候會出現無法Put、Delete請求引數無法傳遞到程式中的尷尬情況,此時我們可以有兩種解決方案:1、使用地址重寫的方法傳遞引數。2、配置web.xml專案環境。 測試的程式為:
iOS xcode程式碼中空格變為特殊字元~解決方法
//聯絡人:石虎 QQ: 1224614774 暱稱:嗡嘛呢叭咪哄 一、概念 比如:NSString *string;(*號前有空格),是正常的. 操作不當,程式碼突然變為:NSStr
URL傳遞引數包含特殊字元的處理
url中包含?、=和&等特殊字元時,如果不進行編碼,後臺接收到引數的時候,會出現資訊丟失的問題,導致後臺接收的引數不全。 解決方法如下: 一、前端解決方案:通過js將url編碼 js對文字進行編碼涉及3個函式:escape,encodeURI,encodeU
spring mvc中關於url中傳遞中文亂碼的解決方法
般的 har rac color nco bytes utf8 int span 在傳值過程中,也是亂碼出現的頻繁地。先不說到底是什麽場景了,通常常用的方案有如下幾個 配置指定的filter <!-- 配置請求過濾器,編碼格式設為UTF-8,避免中文亂碼-->
Tomcat'sURL中傳遞中文引數亂碼的解決方法!
在表單提交中文搜尋過程中,翻頁,連結都帶有關鍵字引數(注意這裡是用URL引數),此時URL必須編碼為你JSP編碼格式,下面以UTF-8為例:Keywords=中國URL=XXX.jsp?keywords=<%=URLEncode.encode("中國","uft-8")
URLEncoder和URLDecoder類(解決url傳遞引數的問題)
網頁中的表單使用POST方法提交時,資料內容的型別是 application/x-www-form-urlencoded,這種型別會: 1.字元"a"-"z","A"-"Z","0"-"9",".","-","*",和"_" 都不會被編碼; 2.將空
位址列中傳遞帶有特殊字元的引數,進行轉義。
引自:http://www.cnblogs.com/artwl/archive/2012/03/07/2382848.html 混亂的URI編碼 JavaScript中編碼有三種方法:escape、encodeURI、encodeURIComponent C#中編碼
struts2在action中傳遞引數給頁面的方法
由於在Action中並不能直接誒訪問Servlet API,但它提供了相關類ActionContext來訪問HttpServletRequest、HttpSession和ServletContext,所以在向前端頁面傳值的方法就出現了多樣化。一般我們經常使用的就是通過request、session來
SpringMVC 學習 十一 springMVC控制器向jsp或者別的控制器傳遞引數的四種方法
以後的開發,大部分是傳送ajax,因此這四種傳遞引數的方法,並不太常用。作為了解吧 第一種:使用原生 Servlet 在控制器的響應的方法中新增Servlet中的一些作用域:HttpRequestServlet,或者HttpSession。 【注意】在方法中,ServletContext的物件是不能作為
微信支付開發出現redirect_uri引數錯誤的解決方法
我們在進行微信支付開發的時候會遇到出現“redirect_uri引數錯誤”這種情況,怎麼辦呢?下面就是我總結出現這種“redirect_uri引數錯誤”的七種可能情況,以及解決方式。 1、可能原因①:授權目錄 支付授權目錄是網站發起請求的頁
url中的特殊字元問題
在 使用url進行引數傳遞時,經常會傳遞一些中文名(或含有特殊字元)的引數或URL地址,在後臺處理時會發生轉換錯誤。在有些傳遞頁面使用GB2312, 而在接收頁面使用UTF8,這樣接收到的引數就可能會與原來發生不一致。使用伺服器端的urlEncode函式編碼的URL,與使用客
ANT 編譯警告: 編碼 UTF-8 的不可對映字元解決方法
今天開始學ant自動構建工具。在編譯原始檔的時候碰到一個警告: 9: 警告:編碼 UTF8 的不可對映字元 [javac] System.out.println("ʹ��jar�ļ����"); [javac]
java.sql.SQLException: ORA-00911: 無效字元 解決方法
java連結Oracle資料庫,進行插入操作,報如下錯誤: 如果你用java寫程式訪問資料庫,出現這個問題: java.sql.SQLException: ORA-00911: 無效字元 at oracle.jdbc.driver.DatabaseError.throw
vue-router如何傳遞引數(三種方法)
1.使用name傳遞 之前一直在配置路由的時候出現一個name,但不知道他具體有什麼用,在路由裡他可以用來傳遞引數。在index.js中將路由的name都寫好 接收引數: 在我們需要接收它的頁