Hibernate与Mysql数据库结合乱码问题解决

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
  Hibernate+MySQL5.0结合的默认配置,那么向数据库写入中文数据的时候会是乱码,且jsp页面显示中文的时候也有有乱码问题,很是烦人。
  经过查询及整理,处理方法如下:
  1、修改hibernate的配置文件,在url处添加绿色的一段:  
< hibernate-configuration > 
< session-factory  name ="myjava" > 
   < property  name ="hibernate.connection.driver_class" >org.gjt.mm.mysql.Driver </ property > 
   < property  name ="hibernate.connection.url" >jdbc:mysql://localhost:3306/myjava ?useUnicode=true&amp;characterEncoding=UTF-8 </ property > 
   < property  name ="hibernate.connection.username" >root </ property > 
   < property  name ="hibernate.connection.password" >test </ property > 
   < property  name ="connection.pool_size" >10 </ property > 
   < property  name ="hibernate.dialect" >org.hibernate.dialect.MySQL5Dialect </ property > 
   < property  name ="current_session_context_class" >thread </ property > 
   < property  name ="cache.provider_class" >org.hibernate.cache.NoCacheProvider </ property > 
   < property  name ="show_sql" >true </ property > 
   < property  name ="hbm2ddl.auto" >create </ property > 
</ session-factory > 
</ hibernate-configuration >
 
2、jsp页面设置语言,同时form表单使用post方式提交
< html > 
< head > 
< meta  http-equiv ="Content-Type"  content ="text/html;charset=UTF-8" > 
< title >Event Manager </title> 
</head> 
< body > 
< form  method ="post" > 
... 
</form> 
</body> 
</html>
 
3、创建一个语言过滤servlet,用来处理请求和发送的字符编码
(1)CharacterEncodingFilter.java文件的源码如下:
import java.io.IOException; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServlet; 

@SuppressWarnings( "serial"
public  class CharacterEncodingFilter  extends HttpServlet  implements Filter { 

     public CharacterEncodingFilter() { 
   // TODO Auto-generated constructor stub 
    } 

     public  void doFilter(ServletRequest arg0, ServletResponse arg1, 
      FilterChain arg2)  throws IOException, ServletException { 
   //下面的两个编码根据你的项目所使用的中文字符集确定 
  arg0.setCharacterEncoding( "UTF-8"); 
  arg1.setCharacterEncoding( "UTF-8"); 
  arg2.doFilter(arg0, arg1); 
    } 
}
 
(2)WEB-INF/web.xml文件修改如下:
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
< web-app  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns ="http://java.sun.com/xml/ns/javaee" 
     xmlns:web ="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     xsi:schemaLocation ="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]" 
     id ="WebApp_ID"  version ="2.5" > 
  
     < filter > 
   < filter-name >CharacterEncodingFilter </ filter-name > 
   < filter-class >events.CharacterEncodingFilter </ filter-class > 
     </ filter > 
     < filter-mapping > 
   < filter-name >CharacterEncodingFilter </ filter-name > 
   < url-pattern >/* </ url-pattern > 
     </ filter-mapping > 

     < welcome-file-list > 
   < welcome-file >index.html </ welcome-file > 
   < welcome-file >index.htm </ welcome-file > 
   < welcome-file >index.jsp </ welcome-file > 
     </ welcome-file-list > 
</ web-app >
 
  到此,hibernate和mysql结合的中文存储乱码问题,jsp页面显示中文问题就解决了。如果你的应用还是有乱码问题,那就要详细对应问题情况,然后再处理问题了。


本文转自xudayu 51CTO博客,原文链接:http://blog.51cto.com/xudayu/64735,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Oracle 关系型数据库 Java
解决读取Oracle数据库US7ASCII编码乱码问题
今天和第三方对接数据时,对方提供了一个视图US7ASCII编码,给代码调试带来了很大的不便。程序输出的mybatis获取的对象及new String(s.getBytes("ISO8859-1"), "GB2312")加解密后都是乱码。
1414 1
|
9月前
|
关系型数据库 MySQL
MySQL实战基础知识入门(5):命令行汉字中文输出乱码的解决方案
MySQL实战基础知识入门(5):命令行汉字中文输出乱码的解决方案
54 0
|
11月前
|
JSON 小程序 数据库
小程序批量导入excel数据,云开发数据库导出cvs乱码解决方案
小程序批量导入excel数据,云开发数据库导出cvs乱码解决方案
394 0
|
关系型数据库 MySQL API
Mysql 8.0 C API连接和获取数据实例(附解决乱码的彩蛋)
Mysql 8.0 C API连接和获取数据实例(附解决乱码的彩蛋)
Mysql 8.0 C API连接和获取数据实例(附解决乱码的彩蛋)
|
Java 关系型数据库 MySQL
数据库中存的内容乱码显示的是问号????的解决方案
数据库中存的内容乱码显示的是问号????的解决方案
数据库中存的内容乱码显示的是问号????的解决方案
|
关系型数据库 MySQL
Mysql输出中文显示乱码处理
Mysql输出中文显示乱码处理
364 0
Mysql输出中文显示乱码处理
|
关系型数据库 MySQL
最讨厌的乱码之 MySQL 乱码
乱码原因 解决方法 原因 总结
最讨厌的乱码之 MySQL 乱码
|
关系型数据库 MySQL Java
【MySQL】SpringBoot数据库操作乱码问题
【MySQL】SpringBoot数据库操作乱码问题
374 0
|
SQL 数据库
tp读取sqlserver数据库一个表的时候一个字段类型是text,数据有空格读取出的数据有乱码解决方案...
$sql="SELECT *, REPLACE(CONVERT(varchar(500), GoodsInfo), CHAR(32), ' ') AS GoodsInfo FROM tDelivery WHERE (DeliveryID = '$DeliveryID')"; GoodsInfo这字段是text类型的,不支持REPLACE函数,所以先用CONVERT把这个字段强行转化成varchar500,然后再用REPLACE 把字段里面的空格 CHAR(32)替换成空就ok了!
284 0
|
存储 SQL 关系型数据库
【肝了三天-建议收藏】实战-万字长文-带你刨析MySQL乱码、字符集和比较规则
【肝了三天-建议收藏】实战-万字长文-带你刨析MySQL乱码、字符集和比较规则
177 0
【肝了三天-建议收藏】实战-万字长文-带你刨析MySQL乱码、字符集和比较规则

热门文章

最新文章