<U><?xml version="1.0" encoding="UTF-8"?></U>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
"
version="3.0">
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<此处省略了mime-mapping的内容>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
现在我能想到的设置编码的地方也就只有这么多了,其他还有哪里需要设置编码?恳求指导。
哈哈哈,经过我的一番苦苦探索,终于找到乱码的原因了,当然乱码问题也被解决了。师兄对我建议所有编码全部使用UTF-8,因此我也建议读者也这样做,好处很多。
下面我介绍下我的解决过程:
第一步:在我发现有乱码后,我首先想到的就是是不是我在某个地方设置的编码错误导致的,而MysQL里的设置是正确的(my.ini里设置),就是全部设置为utf8。所以MySQL下的设置我不需要修改。
第二步:然后就是tomcat了,这东西要对我提交的数据进行处理,网上有许多人提出需要设置web.xml和server.xml里面的编码,其中主要是在server.xml里添加URIEncoding="UTF-8",具体设置为:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />。在我完成这一步的设置之后再次测试,发现还是乱码。保留这一步的修改,进行下一步。
第三步:再次回到.jsp页面,我试着将所有涉及到编码和字符集的地方都设置为UTF-8(我之前在index.jsp中首行写的是<%@page language="java" contentType="text/html; charset=gb2312" %> ,现在使用dreamweaver打开index.jsp将其修改为charset=utf-8),然后在浏览器直接访问index.jsp发现中文有乱码,于是关闭dreamweaver,使用myeclipse重新打开index.jsp文件,发现代码中的中文就是乱码,果断修改成正确的中文字符,同时保留刚才对charset的修改,即仍然使用charset=utf-8,然后重新在浏览器访问index.jsp,终于中文字符正常显示了。(以后从此告别dreamweaver,害我饶了好多路)然后我在index.jsp页面上输入中文数据并提交,依然是中文乱码。做了这一步的修改后,我的两个.jsp文件的头部均有如下两句:
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page contentType="text/html;charset=utf-8"%>
第四步:我刚才在想,到底是往数据库存数据时导致的乱码还是从数据库取数据时导致的乱码呢?再或者是在提交后传输数据到mysql_insert.jsp页面时导致的乱码?然后我直接在数据库中插入一条含有中文字符的数据,然后在浏览器直接访问mysql_insert.jsp,发现中文字符能正常显示。那就是说,是在存数据,或者传输数据时乱码的了。那么该怎么设置才能不至于传数据、存数据不乱码呢?
第五步:网上找了下,找到如下内容,非常有用:
1、jsp页面的编码方式有两个地方需要设置:
复制代码 代码如下: