大家在JSP的開發(fā)過程中褐奥,經(jīng)常出現(xiàn)中文亂碼的問題仰挣,可能一至困擾著您,我現(xiàn)在把我在JSP開發(fā)中遇到
的中文亂碼的問題及解決辦法寫出來供大家參考伸蚯。
一摩渺、JSP頁面顯示亂碼
下面的顯示頁面(display.jsp)就出現(xiàn)亂碼:
JSP的中文處理
<%
out.print("JSP的中文處理");
%>
對不同的WEB服務(wù)器和不同的JDK版本,處理結(jié)果就不一樣剂邮。原因:服務(wù)器使用的編碼方式不同和瀏覽器
對不同的字符顯示結(jié)果不同而導(dǎo)致的摇幻。解決辦法:在JSP頁面中指定編碼方式(gb2312),即在頁面的第一
行加上:<%@ page contentType="text/html; charset=gb2312"%>,就可以消除亂碼了挥萌。完整頁面如下
:
<%@ page contentType="text/html; charset=gb2312"%>
JSP的中文處理
<%
out.print("JSP的中文處理");
%>
二绰姻、表單提交中文時出現(xiàn)亂碼
下面是一個提交頁面(submit.jsp),代碼如下:
JSP的中文處理
下面是處理頁面(process.jsp)代碼:
<%@ page contentType="text/html; charset=gb2312"%>
JSP的中文處理
<%=request.getParameter("name")%>
如果submit.jsp提交英文字符能正確顯示引瀑,如果提交中文時就會出現(xiàn)亂碼狂芋。原因:瀏覽器默認(rèn)使用UTF
-8編碼方式來發(fā)送請求,而UTF- 8和GB2312編碼方式表示字符時不一樣憨栽,這樣就出現(xiàn)了不能識別字符帜矾。
解決辦法:通過request.seCharacterEncoding ("gb2312")對請求進(jìn)行統(tǒng)一編碼,就實(shí)現(xiàn)了中文的正常
顯示屑柔。修改后的process.jsp代碼如下:
<%@ page contentType="text/html; charset=gb2312"%>
<%
request.seCharacterEncoding("gb2312");
%>
JSP的中文處理
<%=request.getParameter("name")%>
三屡萤、數(shù)據(jù)庫連接出現(xiàn)亂碼
只要涉及中文的地方全部是亂碼,解決辦法:在數(shù)據(jù)庫的數(shù)據(jù)庫URL中加上
useUnicode=true&characterEncoding=GBK 就OK了掸宛。
四死陆、數(shù)據(jù)庫的顯示亂碼
在mysql4.1.0中,varchar類型,text類型就會出現(xiàn)中文亂碼唧瘾,對于varchar類型把它設(shè)為binary屬性就
可以解決中文問題措译,對于text類型就要用一個編碼轉(zhuǎn)換類來處理迫像,實(shí)現(xiàn)如下:
public class Convert {
/** 把ISO-8859-1碼轉(zhuǎn)換成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("編碼轉(zhuǎn)換錯誤:"+e.getMessage());
return "";
}
}
}
把它編譯成class,就可以調(diào)用Convert類的靜態(tài)方法ISOtoGB()來轉(zhuǎn)換編碼瞳遍。