jsp页面乱码

关于jsp页面乱码的问题


目录


今天写代码的时候发现几个乱码问题,有两个比较麻烦(对于我这种小白而言),于是看了一些资料和别人的经验,顺利解决了乱码的问题。


一、jsp提交表单后数据库乱码

1.乱码问题

很简单的一个实操作业,只有三张jsp页面:
index.jsp:显示数据库信息,通过链接跳转到edit.jsp对信息进行更改
edit.jsp:更改数据库信息,并将信息提交给save.jsp
save.jsp:将更改后的数据库信息录入数据库,重定向到index.jsp
当在edit.jsp更新数据库信息后提交给save.jsp,发现数据库的中文信息全部变成???

2.解决方法

首先我们要了解jsp页面到浏览器的编码过程
jsp页面乱码

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<meta content=”text/html;charset=utf-8″ />

这里的编码格式都有,不会有问题,此时考虑数据库的编码问题,在数据库中执行下面sql语句:

SHOW VARIABLES LIKE '%colla%';

发现collation_server的value值不是utf8,于是更改为utf8,问题解决!

二、模糊查询乱码

1.乱码问题

一个信息管理系统,执行模糊查询时出现乱码

2.解决方法

首先要明白request.setCharacterEncoding()是对从request中取得的值或从数据库中取出的值进行编码,指定后可以通过getParameter()直接获得对应编码下的字符串,如果不指定,则默认使用ISO-8859-1编码。分析原因,应该是在执行第一个getParameter()的时候,Java将会按照编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。而对于get方法提交表单是,提交的内容在url中,一开始就已经按照编码分析提交内容,setCharacterEncoding()自然就无效。在Tomcat的server.xml写入URIEncoding="utf-8",解决get请求乱码问题!
<Connector port="8080" 
protocol="HTTP/1.1" 
connectionTimeout="20000" 
redirectPort="8443"
URIEncoding="utf-8" />

注意:在执行setCharacterEncoding()之前,不能执行任何getParameter(),并且该指定只对POST方法有效,对GET方法无效。


上一篇:JSP页面打印输出,两种方法。out、《%=


下一篇:UML与软件建模 第五次作业