日期:2014-05-17  浏览次数:20740 次

无奈了!用jquery的get或者post提交都有中文乱码,网上的解决方案几乎都试了个遍,还是没出来啊!求助!
本帖最后由 XIAyuzheng 于 2013-05-29 22:36:14 编辑
我的代码如下:


function validate()
{
$.get("login",{loginName:encodeURI(encodeURI($("#loginName").val()))},function(data)
{
alert(data);
});
}



public class LoginAction 
{
private String loginName;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String execute() throws UnsupportedEncodingException
{
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
//URLEncoder.encode(loginName,"UTF-8");
URLDecoder.decode(new String(ServletActionContext.getRequest().getParameter("loginName").getBytes("ISO-8859-1"),"UTF-8"),"UTF-8");
//URLDecoder.decode(loginName, "utf-8");
PrintWriter out=null;
try {
out =  response.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if("夏".equals(loginName))
{
out.print("该名字不能被注册!");
}
else
{
out.print("该名字 可以被注册!");
}
return null;
}
}


希望有大神能给个好用的解决方案。
jQuery 乱码

------解决方案--------------------
需要的字符串= new String(传过来的参数.getBytes("ISO8859_1"),"UTF-8");
这是我用来转化页面传过来的参数乱码的问题,将页面上传过来的中文参数转换成UTF-8
------解决方案--------------------
如果试了楼上的都不行,我这还有一必杀技:开发服务器的server.xml
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>

------解决方案--------------------
POST:
var params = $("#xxxx").serialize();
    params = decodeURIComponent(params,true);
    params = encodeURI(params);
$.post('xxxx.do',encodeURI(params),getApply,'json'); 

encodeURI要转两次 

取:
java.net.URLDecoder.decode(request.getParameter("xxxxx"), "UTF-8")
------解决方案--------------------
我记得我当时也是出现了乱码,我当时还特别做了笔记,我设置了reponse编码,我觉得可能是ajax的内部编码的原因,你设置下reponse编码试试吧
------解决方案--------------------
页面编码其实是跟很烦的事情。网上也有很多类似的帖子。
我个人觉得要注意这几方面:
1.项目的编码集要统一如用“utf-8”
2.做个filter,把每次的请求拦截并设置request.setCharacterEncoding("UTF-8");
3.tomcat设置 URIEncoding="utf-8"

这么处理后即使使用ajax提交也不用encodeURI