SSH项目前台数据后台存储乱码问题
程序员文章站
2022-04-15 12:33:58
...
最近由于学习需要,从网上下载了一个完整的SSH项目来调试作为参考,可是在调试过程中,发现前台JSP页面得到的中文数据,存储在后台MySQL数据库中的时候,一直是乱码,但是从后台拿出数据在前台显示的时候并不会出现乱码的情况,查询一番资料之后调试了以下部分总算解决问题,字符集统一设置为gb2312:
- 后台MySQL数据库的字符集编码
- JSP页面编码
- Struts及过滤器字符集设置
- Spring配置中链接数据库的URL设置
后台MySQL数据库的字符集编码
修改数据库的字符集编码代码如下:
alter database db_name
[[default] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name];
alter database bookstore character set gb2312;
JSP页面编码
查看JSP文件的开头我们不难发现这样的代码:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@taglib prefix="s" uri="/struts-tags"%>
pageEncoding表示这个页面接收到参数以什么字符集来编码,指明了此页面对request里的参数如何编码。
Struts及过滤器字符集设置
在struts.xml文件中添加
<constant name="struts.i18n.encoding" value="gb2312"></constant>
在web.xml文件中添加
<!--字符编码-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Spring配置中链接数据库的URL设置
hibernate连接数据库的选项是在applicationContext.xml文件中设定的,需要在连接的URL中指定字符集设置
<bean id="candy" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/bookstore? useUnicode=true&characterEncoding=gb2312">
</property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
至此,本SSH项目从前台到后台数据库全部过程统一采用gb2312字符集来编码,解决了中文乱码的问题。