對于Javascript傳遞中文時(shí)調(diào)試出錯(cuò)解釋
作者:佚名
假期開始對Javascript傳遞的學(xué)習(xí),首先碰到的就是環(huán)境的配置。以前學(xué)的Visual Studio2003,但并沒有怎么用。所以有一個(gè)星期的時(shí)間基本是在用實(shí)踐著.net 1.0,不知道Gates知道了,會不會有點(diǎn)郁悶。
如果您確定不論是您的JSP頁面還是您的Servlet都已經(jīng)采取了最基本的亂碼處理方法之后,通過Javascript傳遞的中文在接受的時(shí)候調(diào)試輸出的是?的話,就試試兄弟我下面這個(gè)做法,也是跟別人學(xué)的。#t#
你可能采用的Javascript傳遞的中文參數(shù)正如:
- tempo.open("GET","Query?condition="+encodeURI(encodeURI(query))+"&kind="+kind,true);
- 或者僅僅是在頁面<head>標(biāo)簽中嵌入的一小段script代碼傳遞的中文參數(shù):
- function changefont(){//下拉列邊框變化時(shí)觸發(fā)session中的用戶默認(rèn)字體發(fā)生變化
- var fontname=document.getElementById('fontname').value;
- alert(fontname);
- var url;
- url="Communicate.jsp?user2=";
- urlurl=url+'<%=user2%>';
- urlurl=url+"&user2id="+'<%=user2id%>'+"&changefontname="+encodeURI(encodeURI(fontname));
- // alert(url);
- window.location.href=url;
- }
您可能已經(jīng)發(fā)現(xiàn)他們的一個(gè)共同點(diǎn)了, Javascript傳遞這就是解決問題的方法了,兄弟您可以試試,希望對您有所幫助。下面是接受部分解碼方法:
- String fontwords=request.getParameter("changefontname");//
- fontwords=java.net.URLDecoder.decode(fontwords,"utf8"); //post 傳遞的時(shí)候,一定是用utf8編碼的,url 自己可以設(shè)定
- //System.out.println(condition);
- //當(dāng)調(diào)用request.getParameter()函數(shù)時(shí),會自動進(jìn)行一次URI的解碼過程,調(diào)用時(shí)內(nèi)置的解碼過程會導(dǎo)致亂碼出現(xiàn)。
- 而URI 編碼兩次后,request.getParameter()函數(shù)得到的是原信息URI編碼一次的內(nèi)容。再用可控的解碼函數(shù) java.net.URLDecoder.decode()就可解出原始的正確的信息。
責(zé)任編輯:chenqingxiang
來源:
互聯(lián)網(wǎng)