一个菜鸟的中文乱码解决之路(struts2应用为例)

(1)首先必须设置你的JSP页面与Action之间传递的不是乱码。菜鸟为求保险,把页面跟配置文件全设置了。
页面设置添加<meta http-equiv="Content-Type" content="text/html;charset=GB18030">。
配置文件设置:
struts.xml中
<struts>
<constant name="struts.i18n.encoding" value="GBK"/>
<include file="struts-default.xml"/>
</struts>
web.xml中
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>

注意web.xml中标签的顺序。
这样你在页面中提交表单后,后台Action中得到的就不是乱码了。但菜鸟曾画蛇添足过,就是在Action中将要插入的数据进行了字节编码,代码如下:
//userName=new String(userName.getBytes("ISO-8859-1"),"gbk");
//city=new String(city.getBytes("ISO-8859-1"),"GBK");
//province=new String(province.getBytes("ISO-8859-1"),"GBK");
这样用System.out.println(username);得到的便是??之类,某菜鸟也是百思不得其解,最后只总结出一条,你只要保证在插入数据库前的数据是跟数据库相同的编码相同就可。某菜鸟猜是不是因为在Request提交时Struts2给进行了编码,反正在servlet中这么做是没错的,因为request的默认提交编码是“ISO-8859-1”。等待求证吧!(汗~~~~)
(2)第二部就是数据库的设置。菜鸟用的是MySQL6.0.
建议在建数据库跟表之前就设置好,否则建好后再设置,新的设置只对新建的数据库起作用,旧的那些仍是乱码的说。
菜鸟干什么都求保险,所以能做的都做,也不知道有没有必要。
第一步:
数据库设置:数据库安装目录下my.ini文件中,修改这两项:
CLIENT SECTION
# ----------------------------------------------------------------------
(大约60多行)
default-character-set=gbk
 SERVER SECTION
# ----------------------------------------------------------------------
(在client section下面)
# created and no character set is defined
default-character-set=gbk
第二步:
建数据库时,最好能加上这一条,反正不会多,哈哈~~~set names 'gbk';

如果设置完后仍出现中文乱码,不要气馁,重启计算机或重启服务。但Mysql在偶小电上总出毛病,为求保险偶没有去手动重启MySQL服务,重启的计算机。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章