JSP页面用的是GBK编码,JS代码如下:
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$("#btn").click(function() {
var content=$("#content").serialize();
var params = $("input").serialize()+"&"+encodeURIComponent(content);// 序列化表单的值
$.ajax({
url : "querymessage.action",// 请求的url
type : "post",// 发送方式
dataType : "json",// 接受数据格式
data : params,// 要传递的数据
error:function(json) { // 回传函数
$("#result").html("系统错误,请重新登录……");
},
success : function(json) { // 回传函数
var str="<table><tr><td>";
str+=json.comid;
str+="</td><td>";
str+=json.mtime;
str+="</td></tr><tr><td>";
str+=json.content;
str+="</td></tr></table>";
$("#result").append(str);
}
});

});

});
</script>到了action类的时候开始出现乱码。
网上提到了很多关于encodeURI之类的方法,但仍旧无法解决。

解决方案 »

  1.   

    发送 content-type charset GB2312 头或者注意部分文件被保存为非 GBK 编码....
      

  2.   

    1首先不要用GBK
    2不要用json来定义参数,这样可能会出现冲突
      

  3.   

    首先,整个项目都是采用GBK编码的,而且IE浏览器默认是GB2312,这个貌似不能改了把。
    第二,现在是留言处理,用的是jquery的表单提交的方式,不用json定义参数的话,请问还有什么方法呢?
      

  4.   

    我也遇到过类似的问题,在JSP页面转2次试试:var params = $("input").serialize()+"&"+encodeURI(encodeURI(content));
    然后action中: String content= java.net.URLDecoder.decode(request.getParameter("combo"),"GBK");
      

  5.   

    还是不行,而且在action里面是不可以用request的。
      

  6.   


    也就是通过手动方式,把非规范字符全部转成unicode码,并对控制字符转义。具体结果你可以参考google的ajax我有C#下我自己写的函数,java下面,我可没
      

  7.   

    那楼主设置浏览器自动的来编码编译在ie上的操作是“右键>>编码>>自动.”
    或者设置成GBK的,楼主使用json和定义参数不是一回事,参数是变量什么都可以,只要使用json的方法就行function(json)这里的参数换成边的代替
      

  8.   

    action里面 肯定有方法 获得request的啊。。
      

  9.   


    后来我试过可以了,不过跟你有点不太一样:
    JSP页面是:
    var params = $("input").serialize();
    params=encodeURI(params);
    在action里面是:
    username=java.net.URLDecoder.decode(username,"UTF-8");
    因为我用的是Struts2,所以不需要request,直接取参数就好了……谢谢你,分数就送给你吧~~~(*^__^*)