s2sh中出现乱码

来源:互联网 发布:淘宝卖小孩衣服赚钱吗 编辑:程序博客网 时间:2024/04/29 21:48
 在struts2提交表单时遇到乱码,我在用post时是没有问题的,但在用get提交时却出现乱码。查阅了网上的说法,发现post是按照页面的编码来进行传递的,所以在页面中设置了UTF-8之后就不会有乱码问题。但是get却是以服务器配置为准则。我用的是tomcat,没有配置里面的编码则出现了乱码,几经周折,才知道要在tomcat里面server.xml中配置上 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

 

顺便写上struts2中处理乱码的方法:在struts.xml中配置

<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.locale" value="zh_CN" />

 

如果有用spring的话,则可以在web.xml中配置

<!-- 设置spring字符编码过滤器 -->
  <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>*.action</url-pattern>
   </filter-mapping>
   <filter-mapping>
   <filter-name>encodingFilter</filter-name>
   <url-pattern>*.jsp</url-pattern>
   </filter-mapping>

 

 

还可以编写自己的过滤器,如下:

package com.zxs.myproject.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class ChineseFilter implements Filter {
 private String charset = null;
 public void destroy() {
  // TODO Auto-generated method stub

 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain filterChain) throws IOException, ServletException {
  request.setCharacterEncoding(charset);
  filterChain.doFilter(request, response);
 }

 public void init(FilterConfig filterConfig) throws ServletException {
  // TODO Auto-generated method stub
  charset = filterConfig.getInitParameter("charset");
 }

}

并且在web.xml中配置以下:

<filter>
    <filter-name>ChineseFilter</filter-name>
    <filter-class>com.zxs.myproject.filter.ChineseFilter</filter-class>
    <init-param>
             <param-name>charset</param-name>
             <param-value>UTF-8</param-value>
        </init-param>
 </filter>

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