关于ssh持久化中文数据乱码问题

这几天尝试着编一个类似于贴吧的东西,勉为其难叫他贴吧好了。基于ssh的,包括登录,注册,增删查改帖子,写评论什么的。

最近发现一直用英文作为贴吧的输入语言,发帖回复什么的都使用英语。偶尔使用中文输入却发现无法将帖子等信息通过hibernate持久化到mysql数据库表中。

这可让我有点小尴尬。

起先,在书上找了个filter过滤器,当然这个过滤器写在web.xml上:



	chinacode
	org.springframework.web.filter.CharacterEncodingFilter
	
		encoding
		UTF-8
	

	

	chinacode
	/*

尝试了一下,是不是由于过滤器没有设置导致的无法持久化。在调用持久化方法save()前,我使用输出方法将要插入数据库的数据显示在控制台上,发现控制台上好好的写着中文的数据。Plan A 宣告失败。

查阅了百度经验,发现有网友也出现同样的问题,他们的解决方案是将数据库中的数据字符集修改为UTF-8,因为默认的是什么I开头的一个单词,反正我也记不住了,反正就是保证数据库和网页中的数据编码类型相同均为UTF-8。说干就干,上图:

关于ssh持久化中文数据乱码问题_第1张图片

 

全部改完后,将贴吧重新部署,发现仍然没有将中文数据插入到数据库中去。

 

Plan B宣告失败。爆句脏口~艹~

仔细分析一下,既然mysql数据库中编码形式正确,前端数据编码也是正确的,那么只有在调用hibernate的save()方法时才出现问题,而本贴吧是由spring来控制hibernate的

故要去applicationContext.xml中找到控制hibernate的配置,经过查阅资料,原来可以通过如下代码控制hibernate的编码方式


  
  jdbc:mysql://localhost:3306/你的数据库名称?characterEncoding=UTF-8">

终于,搞定了:

关于ssh持久化中文数据乱码问题_第2张图片

以后一定要记住在开发javaweb的时候,数据库,网页等有关于数据增删查改的动作一定要规范编码格式,保持一致,不能太混乱。


 

你可能感兴趣的:(ssh)