查看完整版本: 工作中遇到jsp關於取得地址欄中文亂碼的問題
頁: [1]

clotw 發表於 2009-11-5 08:50 AM

工作中遇到jsp關於取得地址欄中文亂碼的問題

工作中遇到jsp關於取得地址欄中文亂碼的問題,經過查找,終於找到瞭解決的方法,下面為3種情況說明:

1、前台javascript編碼+後台jsp解碼方式:
前台:
<sccript>
for(i=0;i<_input.length;i++){
   if(_input.type=="text"){
    _input.value=encodeURI(_input.value);
   }
  }
  uploadForm.action="selPerson.jsp";
  uploadForm.submit();
</script>
這裡先對表單裡的數據進行編碼.encodeURL這個方法轉出來的編碼是UTF-8的.
或者通過鏈接傳遞
<a href="selPerson.jsp?param=encodeURI('中文字')">
後台:
<%@ page import="java.net.URLDecoder"%>
URLDecoder.decode(request.getParameter("param").getString(),"UTF-8"));

2、前台javascript編碼+後台javascript解碼方式
前台:
<a href="selPerson.jsp?param=escape('中文字')">
後台:
unescape(param)

3、前台jsp編碼+後台jsp解碼方式
前台:
<%@ page import="java.net.URLEncoder"%>
<a href="selPerson.jsp?param=<%=URLEncoder.encode("中文字")%>">
後台:
<%@ page import="java.net.URLDecoder"%>
URLDecoder.decode(request.getParameter("param"))

因為在jsp中取不到javascript定義的變量值,javascript可以取到jsp中的變量值,我們一般常用的就是第一種方式。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

tsakk 發表於 2009-11-5 01:03 PM

那個不是亂碼
因為 URL 網址必須是 ASCII 字元
只要用 URLDecoder 來做解碼的動作就可以編碼回 UTF-8

magic99 發表於 2009-11-6 01:13 AM

樓主,你不覺得編譯,解譯這樣很麻煩嗎?
實務上這樣寫不是很煩,若有人沒有這樣做怎麼辦
我的方法
1.POST在Filter做編碼
2.Get在Tomcat的server.xml做編碼

mylife877 發表於 2009-11-6 09:23 PM

樓上說的是呀~~
推薦一個我最近找到的網頁跟你分享,在server.xml或web.xml上設定中文部份

http://blog.yam.com/carl44/article/18049288
有興趣就自已看吧

ROACH0426 發表於 2009-11-8 10:22 AM

不了解
為什麼您會有中文亂碼?
一般來說
jSP用get傳送或用javascript中的location來傳送的話
另一端最上面一定要先宣告~~
request.setCharacterEncoding("MS950");
這樣接收表單值
request.getParameter("num"))
才能取得中文字<br><br><br><br><br><div></div>

magic99 發表於 2009-11-10 02:08 AM

不了解
為什麼您會有中文亂碼?
一般來說
jSP用get傳送或用javascript中的location來傳送的話
另一端最 ...
ROACH0426 發表於 2009-11-8 10:22 AM http://www.eyny.com/images/common/back.gif

若每個都要這樣寫不是很麻煩,有人忘了怎麼辦,GET的用法就在SERVER.XML設定即可
頁: [1]