相信寫JSP的人都遇到過亂碼的問題,似乎JSP亂碼是一個非常經典的問題。以前遇到亂碼的時候,基本都可以搞定,當時遇到的亂碼無非以下兩種:
1.頁面上的漢字亂碼
這個我碰到的比較少,多半是因為沒有加上
<%@ page contentType="text/html;charset=gb2312" %>,或者是說這句代碼制定的字元集與<meta http-equiv="Content-Type" content="text/html; charset=gb2312">中指定的不一致,這個應該比較好搞定。
2.從表單讀取資料亂碼
這個我就基本上經常碰到了,通常是這樣的name=request.getParameter(“name”),在頁
面上列印出來的時候就亂碼了,這個時候通常只要重新轉碼就可以搞定了,如下面的代碼所示:name=new String(name.getBytes(“ISO-8859-1”),”GB2312”);
前天又遇到了一個亂碼問題,於是按照以前的經驗來進行處理結果怎麼搞都不行,無
論怎麼轉碼都不行,情況是這樣的:因為使用者要求所有的地方都統一為UTF-8編碼,於是用了如下的指令,<%@ page contentType="text/html;charset=utf-8" %>和<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,
從表單中用request.getParameter得到參數的時候出現了亂碼,此時加上這句request.setCharacterEncoding("utf-8");基本就沒亂碼了。但是,如果我通過url來傳遞中文參數的話就行不通了,這個時候無論我怎麼轉碼,或者說修改tomcat的設定檔都不行了。My Code是類似這樣的:
var name="<%= c_name %>";
window.location = url+"? name="+name+"&unit="+unit
其中c_name是中文。我上網試了很多方法都不行,最後經過如下的處理就可以了:
var name="<%= java.net.URLEncoder.encode(c_name,"utf-8") %>";
window.location = url+"? name="+name+"&unit="+unit。
註:儘管亂碼問題一般都被解決了,但是一直想弄清亂碼產生的根源是什麼,以前看到過一片文章,詳細闡述了亂碼產生的原因,可惜當時太浮躁,沒看完,現在也找不到了,哪位兄弟知道的話不妨告知一下,這才是解決問題的根本,不僅要知其然還要知其所以然,^_^。