解决JavaWeb中文乱码问题的终级方案
?
做JavaWeb开发时,中文乱码问题是最常见的问题之一,当时情况是这样的:JSP页面显示预定义的中文是没问题的,但是往数据库中插数据时,插入的是乱码,如???,然从数据库中调出数据,页面显示出来的也是乱码问题,开始以为是数据库的字符集的问题,后来将所有的JSP页面字符集设置成UTF-8也还是出现同样问题,因此在能设置字符集的地方都设置了,之后就显示中文字符正常了。
一、首先,是在JSP页面设置字符集:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page ?contentType="text/html;charset=utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
然后是在struts.xml中设置字符集:
<struts>
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<include file="struts-default.xml" />
<package name="term" extends="struts-default">
....
</struts>
二、接着是在web.xml ?里配置? <!--过滤器,struts2使用的-->
? ? <filter>
? ? <filter-name>struts</filter-name>
? ? <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
? ? <init-param>?
? ? <param-name>struts.i18n.encoding</param-name>?
? ? <param-value>UTF-8</param-value>
? ? </init-param>
三、必须在资源文件中配置,在classes文件夹中新建以下文件和内容:struts2.properties
此资源文件内容如下:
struts.i18n.reload=true
struts.locale=zh_CN
struts.i18n.encoding=UTF-8
struts.url.includeParams=none
struts.devMode=true
四、在tomcat等服务器中解决字符编码问题,主要解决页面之前传参后中文乱码问题。Tomcat 处理UTF-8字符时,需要在
Server.xml中添加 URIEncoding="UTF-8"
详细如下:
<Connector port="8080"
?maxThreads="150"
?minSpareThreads="25"
?maxSpareThreads="75"
?enableLookups="false"
?redirectPort="8443"
?acceptCount="100"
?debug="0"
?connectionTimeout="20000"
?disableUploadTimeout="true"
?URIEncoding="UTF-8"/>
五、最后是在Eclipse中设置,如果前面的方法足已解决乱码问题,这步可省去:Windows->preferences->输入tomcat ? (改为)utf-8
Windows->preferences->输入jsp ? (改为)utf-8
?