`
wangchongbiao
  • 浏览: 52672 次
  • 性别: Icon_minigender_1
  • 来自: 河北、沧州
社区版块
存档分类
最新评论

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),配置如下: 

<filter> 
<filter-name>SetCharacterEncoding</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> 
<init-param> 
<param-name>forceEncoding</param-name> 
<param-value>true</param-value> 
</init-param> 
</filter> 

 
       4在JSP页面里加上了<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ 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&amp;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解码时就不能保证),得到中文数目为单的参数时最后一个字变成类似“口”字。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics