欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡(jiǎn)單實(shí)例處理url特殊符號(hào)&處理(2種方法)

 更新時(shí)間:2013年04月02日 17:26:29   作者:  
url里的參數(shù)內(nèi)容包含&符合,我有兩種方法解決一是:在頁(yè)面用JS轉(zhuǎn)碼;二是:在后端處理,另外還有網(wǎng)絡(luò)分享的一些方法,感興趣的朋友可以參考下哈
我遇到的問題是:url里的參數(shù)內(nèi)容包含&符合,我有兩種方法解決
其一方法是:在頁(yè)面用JS轉(zhuǎn)碼,例子如下(前端處理)
復(fù)制代碼 代碼如下:

<a href="#" onclick="test('${group.type}','${group.cn }')">${group.cn })</a>
<script language="javascript">
function test(a,b){
alert("test");
location.href='groupsDetailServlet?groupTypeForDetail=' + a + '&cn=' + encodeURIComponent(b);
}
</script>

其二方法是:在后端處理
1>jsp:
復(fù)制代碼 代碼如下:

<a href="groupsDetailServlet?cn=${group.encodedCN }&groupTypeForDetail=${GroupType}"+>${group.cn }</a>

2>java bean: group
復(fù)制代碼 代碼如下:

String cn;//要顯示的CN
String encodedCN;//當(dāng)參數(shù)傳的CN
public Group(String cn) { this(); this.cn = cn; this.encodedCN =LdapUtil.encodeURLStr(cn); }
public void setCn (String name) { this.cn = name; setEncodedCN(LdapUtil.encodeURLStr(cn)); }
public String getCn () { return cn; }
public String getEncodedCN () { return encodedCN; }
public void setEncodedCN (String cn) { this.encodedCN = cn; }

3>調(diào)用類里處理解碼:
復(fù)制代碼 代碼如下:

String cn = LdapUtil.decodeURLStr(encodedCN);

4>LdapUtil.java
復(fù)制代碼 代碼如下:

public static String encodeURLStr(String src)
{
return src != null && src.trim().length() > 0 ? src.replaceAll("&", "@") : "";
}
public static String decodeURLStr(String src)
{
return src != null && src.trim().length() > 0 ? src.replaceAll("@", "&") : "";
}

--------------------------------------以下是-----網(wǎng)絡(luò)搜索資料分享---------------------------------------
在使用url進(jìn)行參數(shù)傳遞時(shí),經(jīng)常會(huì)傳遞一些中文名(或含有特殊字符)的參數(shù)或URL地址,在后臺(tái)處理時(shí)會(huì)發(fā)生轉(zhuǎn)換錯(cuò)誤。在有些傳遞頁(yè)面使用GB2312,而在接收頁(yè)面使用UTF8,這樣接收到的參數(shù)就可能會(huì)與原來發(fā)生不一致。使用服務(wù)器端的 urlEncode函數(shù)編碼的URL,與使用客戶端javascript的encodeURI函數(shù)編碼的URL,結(jié)果就不一樣。javascript對(duì)文字進(jìn)行編碼涉及3 個(gè)函數(shù): escape,encodeURI,encodeURIComponent,相應(yīng) 3 個(gè)解碼函數(shù): unescape,decodeURI,decodeURIComponent

javaScript中的編碼方法
escape () 方法:采用ISO Latin字符集對(duì)指定的字符串進(jìn)行編碼。 所有的空格符、標(biāo)點(diǎn)符號(hào)、特殊字符以及其他非ASCII字符都將被轉(zhuǎn)化成%xx格式的字符編碼(xx等于該字符在字符集表里面的編碼的16進(jìn)制數(shù)字)。比如,空格符對(duì)應(yīng)的編碼是%20。unescape方法與此相反。不會(huì)被此方法編碼的字符: @ * / +
encodeURI ()方法:把URI字符串采用UTF-8編碼格式轉(zhuǎn)化成escape格式的字符串。 不會(huì)被此方法編碼的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent ()方法:把URI字符串采用UTF-8編碼格式轉(zhuǎn)化成escape格式的字符串。與encodeURI()相比,這個(gè)方法將對(duì)更多的字符進(jìn)行編碼,比如 / 等字符。 所以如果字符串里面包含了URI的幾個(gè)部分的話,不能用這個(gè)方法來進(jìn)行編碼,否則 / 字符被編碼之后URL將顯示錯(cuò)誤。不會(huì)被此方法編碼的字符:! * ( )
因此,對(duì)于中文字符串來說,如果不希望把字符串編碼格式轉(zhuǎn)化成UTF-8格式的(比如原頁(yè)面和目標(biāo)頁(yè)面的charset是一致的時(shí)候),只需要使用escape。如果你的頁(yè)面是GB2312或者其他的編碼,而接受參數(shù)的頁(yè)面是 UTF-8編碼的,就要采用encodeURI或者encodeURIComponent。

另外,encodeURI/encodeURIComponent是在javascript1.5之后引進(jìn)的 ,escape則在javascript1.0版本就有。
1、 傳遞參數(shù)時(shí)需要使用 encodeURIComponent,這樣組合的 url 才不會(huì)被 # 等特殊字符截?cái)唷@纾?lt;script language="javascript">document.write('<a +encodeURIComponent ("http://cang.baidu.com/bruce42")+'">退出 </a>');</script>
2、 進(jìn)行 url跳轉(zhuǎn)時(shí)可以整體使用 encodeURI。 例如:Location.href=encodeURI ("http://cang.baidu.com/do/s?word=百度 &ct=21");
3、 js 使用數(shù)據(jù)時(shí)可以使用escape 。 例如:搜藏中history 紀(jì)錄。
4、 escape對(duì) 0-255 以外的unicode 值進(jìn)行編碼時(shí)輸出 %u**** 格式,其它情況下escape , encodeURI , encodeURIComponent編碼結(jié)果相同。

最多使用的應(yīng)為encodeURIComponent ,它是將中文、韓文等特殊字符轉(zhuǎn)換成utf-8 格式的 url 編碼,所以如果給后臺(tái)傳遞參數(shù)需要使用encodeURIComponent 時(shí)需要后臺(tái)解碼對(duì) utf-8 支持(form 中的編碼方式和當(dāng)前頁(yè)面編碼方式相同)

escape不編碼字符有 69 個(gè): *, + , - , . , / , @ , _ , 0-9 , a-z ,A-Z
encodeURI不編碼字符有 82 個(gè): !, # , $ , & , ' , ( , ) , * , + , , , - , . , / , : , ; , = , ? , @ , _ , ~ , 0-9, a-z , A-Z
encodeURIComponent不編碼字符有 71 個(gè): !, ' , ( , ) , * , - , . , _ , ~ , 0-9 , a-z ,A-Z

以下是url中可能用到的特殊字符及在url中的經(jīng)過編碼后的值:(略)
項(xiàng)目中發(fā)現(xiàn),直接對(duì)url中的參數(shù)部分做encodeURI() 編碼轉(zhuǎn)換,后臺(tái)servlet通過getParamater()獲取時(shí),不需要轉(zhuǎn)換可以直接獲取到正確的值。 說明:參數(shù)沒有用到中文,框架用的是struts框架

相關(guān)文章

最新評(píng)論