1. 程式人生 > >url 傳遞引數(特殊字元)解決方法

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都寫好 接收引數: 在我們需要接收它的頁