SSH2解决中文乱码总结
??? 1在Tomcat里面的server.xml把编码改成了UTF-8。
?
??? 2新建立项目后,首先在项目的属性的Resource里把Test file encoding改为UTF-8。;如果你做到中途再设置的话,可能会改得不彻底。(我可能就是中途才把GBK改为UTF-8导致几天都解决不了,现在新建项目先设定为UTF-8才成功)
?
????3使用编码过滤器(org.springframework.web.filter.CharacterEncodingFilter),配置如下:?
<%@ page contentType="text/html;charset=UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
?????? 5在struts.xml里也加上了<constant name="struts.i18n.encoding" value="UTF-8"/>?
?????? 6连接数据库的语句jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8
?????? 7我mysql用的管理软件是Navicat,新建连接时,在”高级“里使用默认的选项,即”使用MySQL字符集“和编码是“65001(UTF-8)”。
?????? 8在Navicat里手动创建数据库时,SQL语句建表示例:CREATE TABLE `co_admin` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, `email` varchar(20) DEFAULT NULL, `role` int(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;?
???????? 记得后面要加上DEFAULT CHARSET=utf8。
?????? 9需要转码的地方在页面和页面之间通过URL传输中文数据时才需要转码:如a.jsp链接到b.jsp时,a.jsp页面要使用String name=URLEncoder.encode( nameStr, "UTF-8")编码,然后链接href="background/manager/modifyAdmin.jsp?name=<%=name%>。b.jsp要得到中文参数要转码解码,String name=new String(request.getParameter("name").getBytes("iso8859-1"),"utf-8")解码即可。但你使用struts标签时加在链接里作为参数传输中文参数就比较困难,如a.jsp里面的链接href="background/manager /modifyAdmin.jsp?name=name=<s:property value='name'/>,这样在a.jsp里就用不了String name=URLEncoder.encode( nameStr, "UTF-8")编码,如果你用的是IE浏览器,然后b.jsp得到中文个数如果是单数的话,如“中国人”从a转到b就会变成“中国口”,个数为双数的话就不会。如果你用的是火狐就单双数中文都系那是正常。即struts2标签库作为参数放进链接(因a.jsp没编码,b.jsp解码时就不能保证),得到中文数目为单的参数时最后一个字变成类似“口”字。