您的位置:首页 > 编程语言 > Java开发

关于struts2,mysql,hibernate的开发环境下的中文显示为“问号”的问题总结

2009-07-01 14:27 666 查看
~前天刚开始学Hibernate~一切还比较顺利~但是突然发现插入mysql数据库的中文全都是问号,于是开始上网查解决的办法。我一直以为是自己在MyEclipse的编码字符集不对,于是乎几乎把所有的方法都试了一遍,但是还是问号问号。。。开始自己没有思考为什么会这样,后来我把输入的中文在每个前台页面和每个后台action都输出来看看,结果发现都是正确的。于是,想到了差不多应该是数据库的问题。

于是开始改mysql的字符集。也不知道为什么mysql的默认字符集会是latin1~但我配置mysql的时候明明选择了默认字符集为utf8,但是重启后还是latin1~后来才发现原来是没有勾第三个复选框--自己选择字符集。。我囧死了。。后来改好了~一切OK~漂亮的中文字出来了~我的“心神不宁”也消失了~~以上纯属自己的牢骚,反正在公司这几天也没什么事~没人关心我~自己写篇日记玩着玩呗。。我把关于解决乱码的问题总结了一下~大部分都是网上的前辈的经验~~

1.页面

每个页面上加上 这样在jsp页面里,点右键,查看编码方式则为UTF-8.

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>


也可以把设置myEclipse中默认的contentTyepe。步骤是:windows->preferences->Generl->ContentType.然后设置成UTF-8.一定要update~~

在JSP页面头部加入下面这句话,告诉浏览器应该调用UTF-8的字符集。

<meta http-equiv="Content-Type" content="text/html; charset=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之上!!)。

<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: