首页 > 代码库 > JSP页面乱码问题

JSP页面乱码问题

1、表单提交中文时出现乱码

下面是一个提交页面(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=http://www.mamicode.com/"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.seCharacterEncoding("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>

2、数据库连接出现乱码

只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK就OK了。

3、数据库的显示乱码

在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下:

public String iso2gb(String qs)   

{   

try{   

if (qs == null) return "NULL";   

else   

{   

return new String(qs.getBytes("iso-8859-1"),"gb2312");   

}   

}   

catch(Exception e){   

System.err.println("iso2gb error:"+e.getMessage());   

}   

return "NULL";   

}   

public String gb2iso(String qs)   

{   

try   

{   

if (qs == null) return "NULL";   

else {   

return new String(qs.getBytes("gb2312"),"iso-8859-1"); }   

}   

catch(Exception e){ System.err.println("gb2iso error:"+e.getMessage());}   

return "NULL";   

此文仅供参考。

JSP页面乱码问题