我正在将UTF-8(日语文本)发送到我的服务器。它可以在Firefox中使用。我的access.log和标头是:
/ajax/?q=%E6%BC%A2%E5%AD%97 Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Content-Type application/x-www-form-urlencoded; charset=UTF-8
Howe,在IE8中,我的access.log说:
/ajax/?q=??
出于某种原因,IE8将我的AJAX呼叫变成了问号。为什么!?我根据一些教程添加了scriptCharset和ContentType,但是还是没有运气。
这是我的代码:
$.ajax({ method:"get", url:"/ajax/", scriptCharset: "utf-8" , contentType: "application/x-www-form-urlencoded; charset=UTF-8", data:"q="+query ..., ... })
尝试使用编码查询参数 encodeURIComponent()
encodeURIComponent()
data:"q="+encodeURIComponent( query )
正如bobince在他的评论中非常正确地指出的那样,如果使用对象表示法将参数传递给ajax方法,它将自行处理编码。
所以
data:{ q : query }
将使jQuery处理编码..