Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有非ascii字符的IE Ajax问题_Java_Jquery_Internet Explorer_Jsp_Character Encoding - Fatal编程技术网

Java 具有非ascii字符的IE Ajax问题

Java 具有非ascii字符的IE Ajax问题,java,jquery,internet-explorer,jsp,character-encoding,Java,Jquery,Internet Explorer,Jsp,Character Encoding,我知道发送和接收jsp页面都是用UTF-8 jquery编码的。post调用可以工作,IE除外。页面输入应该是土耳其语。土耳其特殊人物şığğğğ弄糟了 $.post('/answer.jsp', {cmd:'doSomething',nickname:nickNameUser}, function(data){ if(data!=null && data.success){ window.location.href="

我知道发送和接收jsp页面都是用UTF-8 jquery编码的。post调用可以工作,IE除外。页面输入应该是土耳其语。土耳其特殊人物şığğğğ弄糟了

$.post('/answer.jsp', {cmd:'doSomething',nickname:nickNameUser}, 
 function(data){                
    if(data!=null && data.success){
        window.location.href="/main.htm";
    }
    else{
       $('#formError').text(data.error);    
    }                                       
 },
 'json');   
我试过但失败了

1-)我将接收到的jsp文件转换为ISO-8859-9,并将post转换为ajax提供的字符集

$.ajax({type:'POST',
    url:'/answer.jsp',
    data:{cmd:'doSomething', nickname:NickNameUser},
    dataType:'json',
    contentType: 'application/json; charset=ISO-8859-9',
    cache: false,
    success:function(data){
        if(data!=null && data.success){
            window.location.href="/main.htm";
        }
        else{
            $('#formError').text(data.error);
        }                                       
    }
}); 
2-)我在Java端尝试了以下内容

nickname = new String(nickname.getBytes("utf-8"), "iso-8859-9");
他们都没有工作。你知道有什么解决办法吗?。
顺便说一句,我讨厌IE。

根据对这个问题的评论:

字符变为:
kÄñolÅÃçiÄp

这就是使用UTF-8将字符序列解码为字节,然后使用ISO-8859-1(或ISO-8859-9)将这些字节编码为字符时得到的结果

MSIE以外的现代浏览器足够智能,可以在返回初始HTML的页面响应的HTTP
Content-Type
标题中未指定字符集时检测响应编码。因此,它在MSIE上失败只能意味着在HTTP
内容类型
头中没有指定正确的字符集

将以下行添加到呈现HTML代码的JSP页面顶部应该可以解决此问题:

<%@ page pageEncoding="UTF-8" %>

也许您已经使用了正确的方法,但是还应该考虑到您正在使用相同的字符集解析POST请求参数。在您(ab)用作JSON服务的
answer.jsp
中,您应该确保在访问任何请求参数之前调用以下行:

request.setCharacterEncoding("UTF-8");
String nickname = request.getParameter("nickname");
// ...
另见:
您还可以使用:

url=encodeURI(url);
然后将其作为参数:

$.ajax({type:'POST',
    url:url,.....

你能告诉我角色是怎么搞砸的吗?您100%确定Ajax响应是UTF-8吗?字符转向:Ä䵉§kıol䵉䵉§iÄp