欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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&amp;characterEncoding=gb2312">
        </property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>

至此,本SSH项目从前台到后台数据库全部过程统一采用gb2312字符集来编码,解决了中文乱码的问题。

相关标签: SSH 中文乱码