麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JSP > 正文

JSP對(duì)URL鏈接中的中文亂碼處理方法總結(jié)

2024-09-05 00:22:28
字體:
供稿:網(wǎng)友
這篇文章主要介紹了JSP對(duì)URL鏈接中的中文亂碼處理方法總結(jié),注意一下各瀏覽器的兼容顯示情況,需要的朋友可以參考下
 

IE缺省對(duì)URL后面的參數(shù)是不編碼發(fā)送的,但是Tomat缺省是按ISO8859-1來進(jìn)行URL編碼的,因此才會(huì)出錯(cuò)。

方法一:

對(duì)URL鏈接進(jìn)行二次編碼:

<a onclick="javascript:window.open(encodeURI(encodeURI('./DispatchAction.do?efFormEname=FKRY0001&code_type=中文參數(shù)')))">測(cè)試</a>

或者單獨(dú)對(duì)參數(shù)進(jìn)行二次編碼:

var code_type = "中文參數(shù)";code_type = encodeURI(code_type); code_type = encodeURI(code_type);window.open("./DispatchAction.do?efFormEname=FKRY0001&code_type="+code_type);Service:String code_type = request.getParameter("code_type");//這句話一定要寫,因?yàn)槿绻粚懙脑捑幋a就是%E5%A6%88%code_type = java.net.URLDecoder.decode(code_type,"UTF-8");

有人提出為什么要在客戶端對(duì)字符串重復(fù)編碼兩次呢?

如果因?yàn)轫?xiàng)目需要,不能指定容器使用何種編碼規(guī)則來解碼提交的參數(shù),比如:需要接收來自不同頁面,不地編碼的參數(shù)內(nèi)容時(shí)。 (又或者是開發(fā)人員被這有點(diǎn)復(fù)雜的東西搞得暈頭轉(zhuǎn)向,不懂得如何正確的去做好這接收參數(shù)的工作)

這個(gè)時(shí)候,在客戶端對(duì)參數(shù)進(jìn)行二次編碼,可以有效的避開“提交多字節(jié)字符”的這個(gè)棘手問題。

因?yàn)榈谝淮尉幋a,你的參數(shù)內(nèi)容便不帶有多字節(jié)字符了,成了純粹的 Ascii 字符串。(這里把編第一次的結(jié)果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不帶有多字節(jié)字符的)

再編一次后,提交,接收時(shí)容器自動(dòng)解一次(容器自動(dòng)解的這一次,不管是按 GBK 還是 UTF-8 還是 ISO-8859-1 都好,都能夠正確的得到 [STR_ENC1])

然后,再在程序中實(shí)現(xiàn)一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder.decode(***, "UTF-8"))就可以得到想提交的參數(shù)的原值。

簡(jiǎn)單來說,就是Tomcat服務(wù)器會(huì)自動(dòng)幫你做一次URLDecode,再加上你自己在Service代碼里面寫的URLDecode,一共就是兩個(gè)Decode了。既然要兩次Decode,當(dāng)然就需要兩次Encode了?;蛟S你會(huì)問,干脆只Encode一次,然后在java代碼里不Decode,呵呵,這個(gè)也是不行的,這其實(shí)也就是為什么要進(jìn)行兩次Encode的原因吧。

方法二:(經(jīng)測(cè)試不支持IE8)

http://xxx.do?ptname=中文參數(shù)String strPtname = request.getParameter("ptname");strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8");

方法三:

<%@ page contentType="text/html;charset=gb2312" %><a href="ds.jsp?url=<%=java.net.URLEncoder.encode("編碼的是這里","GB2312")%>">點(diǎn)擊這里</a><%//request.setCharacterEncoding("GBK");if(request.getParameter("url")!=null){str=request.getParameter("url");str=java.net.URLDecoder.decode(str,"GB2312");str=new String(str.getBytes("ISO-8859-1"));out.print(str);}%>

方法四:
Tomcat中設(shè)置server.xml中的Connector熟悉URIEncoding="UTF-8",確保解碼格式與編碼格式統(tǒng)一。



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JSP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 精品一区免费 | 日韩精品中文字幕在线观看 | 一级黄色影片在线观看 | 国产精品亚洲三区 | 欧美一级久久 | 欧美精品成人一区二区三区四区 | 一级黄色av电影 | 92看片淫黄大片欧美看国产片 | 成人免费入口 | 国产chinesehd精品91 | 91久久一区| free japan xxxxhdsex69 | 91色综合综合热五月激情 | 成人毛片在线 | 91成人影库| 黄www片| 黄色久| 欧美性受ⅹ╳╳╳黑人a性爽 | 一级做a爱片久久毛片a高清 | 日本在线不卡一区二区三区 | 国产毛片aaa一区二区三区视频 | 中文字幕视频在线播放 | 成人免费一区二区 | 亚洲日本韩国精品 | 欧美成人a | 国产一区毛片 | 久久午夜国产 | 欧美成人精品一区二区 | 日本a∨精品中文字幕在线 狠狠干精品视频 | 91精品国产日韩91久久久久久360 | 精品一区二区电影 | 国产成人av免费看 | chinesegv男男猛男无套 | 久久国产精品电影 | 久久久久久久99 | 小视频成人 | 国产美女视频一区二区三区 | 日韩av在线影院 | 91麻豆精品国产91久久久无需广告 | 撅高 自己扒开 调教 | 欧美精品亚洲人成在线观看 |