頁面亂碼
這種亂碼的原因是應為沒有在頁面裡指定使用的字符集編碼解決方法只要在頁面開始地方用下面代碼指定字符集編碼即可
代碼如下
<%@ page contentType="text/html; charset=gb" language="java" import="javasql*" errorPage="errjsp" %>
數據庫亂碼
這種亂碼會使你插入數據庫的中文變成亂碼或者讀出顯示時也是亂碼
解決方法如下
在數據庫連接字符串中加入編碼字符集
代碼如下
String Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB
";
並在頁面中使用如下代碼
代碼如下
response
setContentType("text/html;charset=gb
");
request
setCharacterEncoding("gb
");
URL傳值亂碼
方法一
在bjsp中把pageEncoding="GB"改為pageEncoding="ISO"
雖然這樣bjsp頁面顯示的內容還是亂碼但是不是那種“??????”的亂碼而是一些特殊字符
然後在浏覽器中查看菜單中修改成GB的編碼這時亂碼就顯示中文了
但是這種方法是不可行的
方法二
在bjsp中把
代碼如下
String name=request
getParameter("name");
修改為
代碼如下
String name=new String(request
getParameter("name")
getBytes("ISO
")
"GB
");
這時再在頁面上顯示則就是中文了
方法三:
在請求頁面的請求參數需要用encodeURI進行轉碼然後在接收請求的頁面需要進行字符集轉換 本例中的請求和接收頁面的字符集都是UTF:
請求的JSP頁面用JavaScript的encodeURI()方法將參數轉碼
代碼如下
function toView(param){
var encodeparam = encodeURI(param) ;
window
location
href="/naias/advAna_form
do?method=showDetail&title="+encodeparam ;
}
在跳轉的Action中進行字符集轉換 wwwcnnet
代碼如下
public ActionForward excute(ActionMapping mapping
ActionForm form
HttpServletRequest request
HttpServletResponse response){
String title= request
getParameter("title")
title= new String( title
getBytes("iso
")
"UTF
")
System
out
println(title)
}
為編碼為UTF的JSP頁面傳參對於中文亂碼的解決分為兩種情況
通過GET方式傳參通過
代碼如下
new String(request
getParameter("")
getBytes("ISO
")
"UTF
");
的方式轉換為需要的編碼如UTF等
通過POST方式傳參通過聲明
代碼如下
request
setCharacterEncoding("UTF
");
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20214.html