首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >非ascii字符的IE Ajax问题

非ascii字符的IE Ajax问题
EN

Stack Overflow用户
提问于 2011-07-13 01:56:28
回答 2查看 2.5K关注 0票数 4

我有发送和接收jsp页面都是用UTF8编码的jquery.post调用工程,除了IE。页面输入应使用土耳其语。土耳其特殊字符çşığü搞砸了。

代码语言:javascript
运行
复制
$.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提供的字符集

代码语言:javascript
运行
复制
$.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端尝试过

代码语言:javascript
运行
复制
nickname = new String(nickname.getBytes("utf-8"), "iso-8859-9");

它们都不起作用。你知道有什么变通办法吗?顺便说一下,我讨厌IE。

EN

回答 2

Stack Overflow用户

发布于 2011-09-17 01:29:59

您还可以使用:

代码语言:javascript
运行
复制
url=encodeURI(url);

然后把它作为一个参数:

代码语言:javascript
运行
复制
$.ajax({type:'POST',
    url:url,.....
票数 2
EN

Stack Overflow用户

发布于 2011-07-13 04:22:01

根据对问题的评论:

字符转换为:ÄÅçkıolÅÅçiÄp

这就是使用UTF-8将字符序列ğşçkıolşşçiğp解码为字节,然后使用ISO-8859-1 (或ISO-8859-9)将这些字节编码为字符时得到的结果。

当返回初始Content-Type的页面的响应的HTTPHTML头中没有指定字符集时,除MSIE之外的其他现代浏览器能够检测到响应编码。因此,在MSIE上失败只能意味着没有在HTTP Content-Type标头中指定正确的字符集。

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

代码语言:javascript
运行
复制
<%@ page pageEncoding="UTF-8" %>

它会将响应编码和内容类型头部字符集设置为指定的字符集。

您还可以将以下条目添加到webapp的/WEB-INF/web.xml文件中,以使其在webapp的每个JSP页上生效:

代码语言:javascript
运行
复制
<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

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

代码语言:javascript
运行
复制
request.setCharacterEncoding("UTF-8");
String nickname = request.getParameter("nickname");
// ...

另请参阅:

  • Unicode - How to get the characters right?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6668786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档