BrisbaneBBS.com悠悠网 | 布里斯班中文网_昆士兰华人论坛_黄金海岸论坛_Goldcoast_租房_工作_交友_同城

标题: 解决中文乱码的常见问题 [打印本页]

作者: Marshal    时间: 2009-4-27 18:33
标题: 解决中文乱码的常见问题
荐于经常看到朋友说哪里出现中文乱码了,菜鸟我以自己在项目经常遇到的整理了一下,有以下几个方面:
  
1.最基本的在jsp页面上要把pageEncoding设置为中文,如:  <%@ page language="java" pageEncoding="GBK"%>  
  
2.对于表单的doPost()提交,也会出现中文出现乱码,可以在servlet里设置如下:request.setCharacterEncoding("GBK"),response.setCharacterEncoding("GBK"),不过此方法在每个servlet都要设置,很麻烦,建议写个过滤器设置。可以参考以下:
    public void doFilter(ServletRequest request, ServletResponse response,  
FilterChain chain) throws IOException, ServletException {  
  
HttpServletRequest request_1 = (HttpServletRequest) request;  
HttpServletResponse response_1 = (HttpServletResponse) response;  
  
// 转换编码,并且加上去缓存  
request_1.setCharacterEncoding("GBK");  
response_1.setCharacterEncoding("GBK");  
chain.doFilter(request, response);  
  
}  
3、第三种就是 如果用doGet()提交,后面跟的参数如果也是中文,这个解决方法可以在tomcat或JBoss的配置文件里面配置,以tomcat为例:  
      <Connector port="8099" maxHttpHeaderSize="8192"  
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
               enableLookups="false" redirectPort="8443" acceptCount="100"  
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>  
  在这里面最后加上URIEncoding="GBK".  
4、ajax也会产生乱码问题,这个问题可以在tomcat的配置那里解决。  
  
5、文件上传时文件名也会出现乱码。  
可以用此方法paramMap.put(fi.getFieldName(), new String(fi.getString().getBytes("ISO-8859-1"),"GBK"));  
  
知识浅陋,若有错误,请大虾指正或其他更多的补充 。
作者: patrick.huang    时间: 2009-4-27 19:02
编码是很恶心的,这还不包括和数据库连接,据我经验,连接mysql的时候,除了安装mysql时指定编码utf8,还要再每次连接的时候告诉它你往里写的是utf8编码的数据,读出以后也要指明是按utf8读

好在现在在鬼子公司干不用考虑这么多编码问题,唉,什么时候默认全都是utf8多好啊




欢迎光临 BrisbaneBBS.com悠悠网 | 布里斯班中文网_昆士兰华人论坛_黄金海岸论坛_Goldcoast_租房_工作_交友_同城 (http://sinomedia.com.au/) Powered by Discuz! X3.2