此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【eeight】截止到2008-07-21 18:18:00的历史汇总数据(不包括此帖):
发帖的总数量:9                        发帖的总分数:400                      每贴平均分数:44                       
回帖的总数量:16                       得分贴总数量:3                        回帖的得分率:18%                      
结贴的总数量:9                        结贴的总分数:400                      
无满意结贴数:0                        无满意结贴分:0                        
未结的帖子数:0                        未结的总分数:0                        
结贴的百分比:100.00%               结分的百分比:100.00%                  
无满意结贴率:0.00  %               无满意结分率:0.00  %                  
敬礼!

解决方案 »

  1.   

      response.setCharacterEncoding("UTF-8");
      

  2.   

    如果你用的是tomcat5的话,用form提交的时候,最好加上 method=post
      

  3.   

    试过了不行啊,还有说要encodeURI 2次的。
      

  4.   

    页面出现的是部分乱码还是全部乱码呢?js中的参数data需要加转换的方法。javascript在这个方面非常讨厌。
    function sendAddSubjectRequest(_data) {
        var date = EncodeUtf8(_date);
        var XMLHttpReq = createXMLHttpReq();
        XMLHttpReq.open("POST", "/ajax/ajax.do?" + data, true);
        XMLHttpReq.setRequestHeader("Content-Type", "text/html;charset=utf-8");
        XMLHttpReq.onreadystatechange = processResponse;
        XMLHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        XMLHttpReq.send(null);
    } function EncodeUtf8(s1)
      {
          var s = escape(s1);
          var sa = s.split("%");
          var retV ="";
          if(sa[0] != "")
          {
             retV = sa[0];
          }
          for(var i = 1; i < sa.length; i ++)
          {
               if(sa[i].substring(0,1) == "u")
               {
                   retV += Hex2Utf8(Str2Hex(sa[i].substring(1,5)));
                  
               }
               else retV += "%" + sa[i];
          }
         
          return retV;
      }  function Str2Hex(s)
      {
          var c = "";
          var n;
          var ss = "0123456789ABCDEF";
          var digS = "";
          for(var i = 0; i < s.length; i ++)
          {
             c = s.charAt(i);
             n = ss.indexOf(c);
             digS += Dec2Dig(eval(n));
              
          }
          //return value;
          return digS;
      }  function Dec2Dig(n1)
      {
          var s = "";
          var n2 = 0;
          for(var i = 0; i < 4; i++)
          {
             n2 = Math.pow(2,3 - i);
             if(n1 >= n2)
             {
                s += '1';
                n1 = n1 - n2;
              }
             else
              s += '0';
             
          }
          return s;
         
      }  function Dig2Dec(s)
      {
          var retV = 0;
          if(s.length == 4)
          {
              for(var i = 0; i < 4; i ++)
              {
                  retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);
              }
              return retV;
          }
          return -1;
      }  function Hex2Utf8(s)
      {
         var retS = "";
         var tempS = "";
         var ss = "";
         if(s.length == 16)
         {
             tempS = "1110" + s.substring(0, 4);
             tempS += "10" +  s.substring(4, 10);
             tempS += "10" + s.substring(10,16);
             var sss = "0123456789ABCDEF";
             for(var i = 0; i < 3; i ++)
             {
                retS += "%";
                ss = tempS.substring(i * 8, (eval(i)+1)*8);
               
               
               
                retS += sss.charAt(Dig2Dec(ss.substring(0,4)));
                retS += sss.charAt(Dig2Dec(ss.substring(4,8)));
             }
             return retS;
         }
         return "";
      }更改JS后,如果问题依旧。这时候就可以从jsp页面。最好再保证站点中所有的jsp页面都声明为:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>... ...有一次我马虎,把一个页面title写在声明上面了,造成那个页面转到的所有页面都是乱码。
    gb2312也是这样,如果一个页面声明为了gb2312那个页面转到的所有utf页面都会出现乱码。建议还是别用javascript了:)
      

  5.   

    至于JS的转换,还有一篇广为流传的文章,你可以参考一下:http://sudu.cn/info/html/edu/javascript/20071219/122949.html
      

  6.   

    还有一个可能是jsp方面的,Web服务器没有重新编译页面,比如Tomcat必须把work目录删掉。朋友们也常遇到这个问题吧。
      

  7.   

    我把你的JS靠近,然后删除了一些没用的空格,可还是乱码。
    能不能留下QQ我把例子发给你,你帮我改下,
    例子不大,就2,3个文件,不会占用你太多时间的。
      

  8.   

    MSN可以吗?我用的Linux系统,Luma用不了了。[email protected]:)
      

  9.   

    我用的是kopete联MSN,如果加不上的话,发到信箱里也可以,我11点前都在。
      

  10.   

    都改成gbk,中文编码。
    response.setCharacterEncoding("UTF-8");再加一个过滤器。过滤器编码GBK
    就ok了。
    我也碰到了这个问题。
    好像ajax传输编码就是utf8。
      

  11.   

    data = encodeURIComponent(data);
    网上有篇帖子说encodeURIComponent>encodeURI...自己找找吧,总之用这个就没错
      

  12.   

    super.process(arg0, arg1);
    arg0.setCharacterEncoding("utf-8");先用页面请求测试结果是否正确。Ajax的请求只能是utf-8的编码,所以如果你的ajax请求中包含中文,要用encodeURI()函数
      

  13.   


    package ajax.global;import java.io.IOException;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionServlet;public class AjaxActionServlet extends ActionServlet {    protected void process(HttpServletRequest arg0, HttpServletResponse arg1) throws IOException, ServletException {
            // TODO Auto-generated method stub
            super.process(arg0, arg1);
            arg0.setCharacterEncoding("utf-8");
    //        arg1.setCharacterEncoding("utf-8");
        }}上面写错了应该是先对request/response进行强制转换,再调用父类方法,你先调父类方法,后面的
    arg0.setCharacterEncoding("utf-8");
    arg1.setCharacterEncoding("utf-8");
    根本就没执行,哎~  好久不来这了,逛逛
      

  14.   

    在ajax页面对url进行两次encodeURI编码,然后在action里面再对传来的参数,使用java.net.URLDecoder.decode进行解码,这样应该就没问题了!