JSP中文問題

1、JSP頁面顯示亂碼2、表單提交中文時出現亂碼3、數據庫連
你們在JSP的開發過程當中,常常出現中文亂碼的問題,可能一至困擾着您,我如今把我在JSP開發中遇到的中文亂碼的問題及解決辦法寫出來供你們參考。
1、JSP頁面顯示亂碼
下面的顯示頁面(display.jsp)就出現亂碼:
<html> 
<head>
<title>JSP的中文處理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%
out.print("JSP的中文處理");
%>
</body>
</html>
對不一樣的WEB服務器和不一樣的JDK版本,處理結果就不同。緣由:服務器使用的編碼方式不一樣和瀏覽器對不一樣的字符顯示結果不一樣而致使的。解決辦法:在JSP頁面中指定編碼方式(gb2312),即在頁面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>,就能夠消除亂碼了。完整頁面以下:
<%@ page contentType="text/html; charset=gb2312"%> 
<html>
<head>
<title>JSP的中文處理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%
out.print("JSP的中文處理");
%>
</body>
</html>
2、表單提交中文時出現亂碼
下面是一個提交頁面(submit.jsp),代碼以下:
<html> 
<head>
<title>JSP的中文處理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="process.jsp">
<div align="center">
<input type="text" name="name">
<input type="submit" name="Submit" value="Submit">
</div>
</form>
</body>
</html>
下面是處理頁面(process.jsp)代碼:
<%@ page contentType="text/html; charset=gb2312"%> 
<html>
<head>
<title>JSP的中文處理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%=request.getParameter("name")%>
</body>
</html>
若是submit.jsp提交英文字符能正確顯示,若是提交中文時就會出現亂碼。緣由:瀏覽器默認使用UTF-8編碼方式來發送請求,而UTF-8和GB2312編碼方式表示字符時不同,這樣就出現了不能識別字符。解決辦法:經過request.setCharacterEncoding("gb2312")對請求進行統一編碼,就實現了中文的正常顯示。修改後的process.jsp代碼以下:
<%@ page contentType="text/html; charset=gb2312"%> 
<%
request.seCharacterEncoding("gb2312");
%>
<html>
<head>
<title>JSP的中文處理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%=request.getParameter("name")%>
</body>
</html>
3、數據庫鏈接出現亂碼
只要涉及中文的地方所有是亂碼,解決辦法:在數據庫的數據庫URL中加上useUnicode=true&characterEncoding=GBK就OK了。
4、數據庫的顯示亂碼
在mysql4.1.0中,varchar類型,text類型就會出現中文亂碼,對於varchar類型把它設爲binary屬性就能夠解決中文問題,對於text類型就要用一個編碼轉換類來處理,實現以下:
public class Convert { 
/** 把ISO-8859-1碼轉換成GB2312
*/
public static String ISOtoGB(String iso){
String gb;
try{
if(iso.equals("") || iso == null){
return "";
}
else{
iso = iso.trim();
gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
return gb;
}
}
catch(Exception e){
System.err.print("編碼轉換錯誤:"+e.getMessage());
return "";
}
}
}
把它編譯成class,就能夠調用Convert類的靜態方法ISOtoGB()來轉換編碼。
相關文章
相關標籤/搜索