如何解决JSP页面显示乱码问题

开发 后端
本文介绍JSP页面经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。

一、JSP页面显示乱码

下面的显示JSP页面(display.jsp)就出现乱码:

  1. <html>   
  2. <head>   
  3. <title>JSP的中文处理</title>   
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
  5. </head>   
  6. <body>   
  7. <%   
  8. out.print("JSP的中文处理");   
  9. %>   
  10. </body>   
  11. </html> 

对不同的WEB服务器和不同的JDK版本,处理结果就不一样。原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。解决办法:在JSP页面中指定编码方式(gb2312),即在页面的***行加上:

  1. <%@ page contentType="text/html; charset=gb2312"%> 

就可以消除乱码了。完整页面如下:

  1. <%@ page contentType="text/html; charset=gb2312"%>   
  2. <html>   
  3. <head>   
  4. <title>JSP的中文处理</title>   
  5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
  6. </head>   
  7.  
  8. <body>   
  9. <%   
  10. out.print("JSP的中文处理");   
  11. %>   
  12. </body>   
  13. </html> 

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

下面是一个提交页面(submit.jsp),代码如下:

  1. <html>   
  2. <head>   
  3. <title>JSP的中文处理</title>   
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
  5. </head>   
  6. <body>   
  7. <form name="form1" method="post" action="process.jsp">   
  8. <div align="center">   
  9. <input type="text" name="name">   
  10. <input type="submit" name="Submit" value="Submit">   
  11. </div>   
  12. </form>   
  13. </body>   
  14. </html> 

下面是处理页面(process.jsp)代码:

  1. <%@ page contentType="text/html; charset=gb2312"%>   
  2. <html>   
  3. <head>   
  4. <title>JSP的中文处理</title>   
  5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
  6. </head>   
  7. <body>   
  8. <%=request.getParameter("name")%>   
  9. </body>   
  10. </html> 

如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.seCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下:

  1. <%@ page contentType="text/html; charset=gb2312"%>   
  2. <%   
  3. request.seCharacterEncoding("gb2312");   
  4. %>   
  5. <html>   
  6. <head>   
  7. <title>JSP的中文处理</title>   
  8. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
  9. </head>   
  10.  
  11. <body>   
  12. <%=request.getParameter("name")%>   
  13. </body>   
  14. </html> 

三、数据库连接出现乱码

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

四、数据库的显示乱码

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

  1. public String iso2gb(String qs)   
  2. {   
  3. try{   
  4. if (qs == null) return "NULL";   
  5. else   
  6. {   
  7. return new String(qs.getBytes("iso-8859-1"),"gb2312");   
  8. }   
  9. }   
  10. catch(Exception e){   
  11. System.err.println("iso2gb error:"+e.getMessage());   
  12. }   
  13. return "NULL";   
  14. }   
  15. public String gb2iso(String qs)   
  16. {   
  17. try   
  18. {   
  19. if (qs == null) return "NULL";   
  20. else {   
  21. return new String(qs.getBytes("gb2312"),"iso-8859-1"); }   
  22. }   
  23. catch(Exception e){ System.err.println("gb2iso error:"+e.getMessage());}   
  24. return "NULL";   

以上是开发过程中,JSP页面经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。

【编辑推荐】

  1. JSP连接ORACLE数据库时注意的一些问题
  2. JSP中tomcat的SQL Server2000数据库连接池的配置
  3. 简单介绍Servlets和JSP的区别
  4. JSP include指令和include行为的区别
  5. JSP输出excel文档和中文乱码问题的解决
责任编辑:佚名 来源: builder
相关推荐

2009-07-07 18:20:54

JSP页面显示乱码

2009-07-06 17:50:13

Java JSP

2009-07-07 13:42:57

Servlet JSP

2017-08-02 15:51:24

PHP中文乱码

2011-08-08 10:29:12

MySQL

2012-06-19 14:35:24

JSPJava乱码

2009-07-01 18:14:36

JSP乱码

2015-04-01 10:26:32

开发中文乱码问题

2010-10-08 11:41:38

PHP连接MYSQL

2012-09-05 11:09:15

SELinux操作系统

2010-04-29 17:46:31

Oracle死锁

2009-07-02 13:26:32

JSP中文乱码

2009-07-01 18:05:54

JSP中文乱码

2009-06-30 13:49:21

excel文档Jsp

2010-08-06 10:49:16

FlexJsp

2011-08-29 10:34:00

网络安全云安全云计算

2011-03-23 14:42:47

CPU过度消耗

2017-10-17 09:21:06

2023-10-30 18:35:47

MySQL主从延时

2010-07-16 13:52:26

telnet漏洞
点赞
收藏

51CTO技术栈公众号