~前天刚开始学Hibernate~一切还比较顺利~但是突然发现插入mysql数据库的中文全都是问号,于是开始上网查解决的办法。我一直以为是自己在MyEclipse的编码字符集不对,于是乎几乎把所有的方法都试了一遍,但是还是问号问号。。。开始自己没有思考为什么会这样,后来我把输入的中文在每个前台页面和每个后台action都输出来看看,结果发现都是正确的。于是,想到了差不多应该是数据库的问题。
于是开始改mysql的字符集。也不知道为什么mysql的默认字符集会是latin1~但我配置mysql的时候明明选择了默认字符集为utf8,但是重启后还是latin1~后来才发现原来是没有勾第三个复选框--自己选择字符集。。我囧死了。。后来改好了~一切OK~漂亮的中文字出来了~我的“心神不宁”也消失了~~以上纯属自己的牢骚,反正在公司这几天也没什么事~没人关心我~自己写篇日记玩着玩呗。。我把关于解决乱码的问题总结了一下~大部分都是网上的前辈的经验~~
1.页面
- 每个页面上加上 这样在jsp页面里,点右键,查看编码方式则为UTF-8.
- 也可以把设置myEclipse中默认的contentTyepe。步骤是:windows->preferences->Generl->ContentType.然后设置成UTF-8.一定要update~~
- 在JSP页面头部加入下面这句话,告诉浏览器应该调用UTF-8的字符集。
2.数据库连接语句
- 设置characterencoding为UTF-8 如jdbc.mysql.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF8
- 如果使用Hibernate,那就把所有的配置文件头部的编码格式改成UTF-8。
3.Tomcat
- 为了保证get/post数据都采用相同的UTF8编码,我们在server.xml中进行了如下设置: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
4. struts2配置
- struts2在配置struts.properties文件中加上struts.i18n.encoding=UTF-8 或者在struts.xml里加上<constant name="struts.i18n.encoding" value="UTF-8" />
- jsp向action提交数据时出现乱码时,在web.xml加入filter(必须在filterDispatcher之上!!)。
5.数据库(mysql)
可以先输入查询语句SHOW VARIABLES LIKE 'character_set_%';,查看所有的编码是否是UTF-8.
如果不是可以使用Server Instance Config 把默认的字符集设置为utf-8或者修改/MySQL/MySQL Server 5.0/my.ini中的default-character-set=utf8。