做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