本帖最后由 longforblossom 于 2010-01-09 14:20:44 编辑

解决方案 »

  1.   

    jsp 页面
    <%@ page language="java" contentType="text/html; charset=UTF-8"%>
      

  2.   

    ajax返回后,在浏览器菜单上选:
    查看->字符编码(我用的FF,用IE的自己找相应的选项)
    然后挨个试里面的编码(当然要选靠谱的)。
    看哪个能让你的字出来。
      

  3.   

    对于ajax有乱码有好几种解决方案,个人认为最直接,最有效的方案,有两种
    第一种,去修改jquery的源代码,jquery没有发送头缟编码,把头编码加上
    第二种,本人一直在用,也推荐使用的,过虑器解决方案,这也是最有效的.
    网上找一找
      

  4.   

    试试过滤器:
     web.xml 中: 
     
     <filter>  
       <filter-name>setEncoding</filter-name>  
       <filter-class>com.zlm.tools.ToUnicode</filter-class>  
       <init-param>  
       <param-name>toUnicode</param-name>  
       <param-value>UTF-8</param-value> 
       //  这个编码是你 jsp 中的编码,如果你的jsp 是gbk,那么就改 gbk
       </init-param>  
     </filter>  
    下面这个是过滤器的java :
    package com.zlm.tools;
    import java.io.IOException;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;public class ToUnicode implements javax.servlet.Filter {
    private String toUnicode = "ISO-8859-1";//这个和你web 里传过来的一致; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding(this.toUnicode);
    response.setCharacterEncoding(this.toUnicode); chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException {

    String unicode = filterConfig.getInitParameter("toUnicode");

    if (unicode != null && unicode.length() > 0) {

    this.toUnicode = unicode;

    } }}
      

  5.   

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

  6.   

    debug一下究竟在那里出现乱码?
      

  7.   

    大部分出现 这样的原因是你请求和响应页面的编码不一致造成的,如果两个页面一致,出现乱码的机会很少。全部都设置成utf-8
      

  8.   

    必须加过滤器,struts中,只有一个servlet,action都是先经过servlet处理了的,所以必须先加一个过滤器,用户转换字符集
    package web;
    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;
    import javax.servlet.http.HttpServlet;public class MyFilter extends HttpServlet implements Filter { public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    arg0.setCharacterEncoding("UTF-8");
    arg1.setContentType("text/html;charset=UTF-8");
    arg2.doFilter(arg0, arg1);
    } public void init(FilterConfig arg0) throws ServletException { }
    public MyFilter() {
    super();
    }
    public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
    }
    public void init() throws ServletException {
    // Put your code here
    }}
    在web.xml中加一段配置
        <filter>
            <filter-name>MyFilter</filter-name>
            <filter-class>web.MyFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>MyFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    就行了
      

  9.   

    郁闷,昨天搞了一天解决,今天早上加上这句response.setContentType("text/html;charset=gbk");  就ok了