您的位置:首页 > 运维架构 > Tomcat

使用struts2+spring+tomcat+mysql数据库开发中文乱码问题解决方案

2012-09-05 12:11 435 查看
第一次使用mysql结合struts2和spring开发,接二连三碰到中文乱码异常问题。

理想下整个过程全部使用utf-8,中间不用转换编码。

首先,mysql数据库字符集全部设成utf-8,没有问题。

然后,struts.xml配置文件中加入

[xhtml] view
plaincopy

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

jsp页面加入

[xhtml] view
plaincopy

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">

spring数据源配置(注意url)

[xhtml] view
plaincopy

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

<property name="driverClassName" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://localhost:3306/bysj?useUnicode=true&characterEncoding=utf-8"/>

<property name="username" value="root"/>

<property name="password" value="123"/>

</bean>

一开始我url后面没有加编码,导致出现了一个诡异的问题:使用spring的jdbctemplate执行不带中文的sql语句没有问题,执行带中文的sql语句查不到数据,而将这条sql语句直接在数据库中执行却也完全没问题。

另外保险起见在web.xml中再加个经典的字符编码过滤器

[xhtml] view
plaincopy

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter

</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

最后tomcat中server.xml也要配置(URIEncoding="UTF-8"是添加上去的)。

[xhtml] view
plaincopy

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding="UTF-8"/>

搞定!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐