在ajax成功时,撇号字符未正确转换为UTF-8

时间:2013-04-11 00:58:53

标签: jquery html ajax utf-8

我发现角色没有被正确转义并且正在制作角色

//ajax the next page
var sendRequest = function(href, direct){
    pushState(href);
    jQuery.ajax({
        url: href,
        dataType: "html",
        cache: false,
        contentType: "text/html; charset=utf-8",
        success: function(data) {
            pushNewData(data, direct);
        }
    });
}

例如,元素‘electric brain‘中的文字port_quote不正确。

<div id="port_quote">
    <p>"Toi is the Maori word for art and the literal translation of rorohiko, the Maori word for computer, is �electric brain�. Rorohiko is morphed into Rerehiko and Toi Rerehiko is a moving image art form immersed in Maori tradition, tikanga (custom) and values which uses digital and electronic media."</p>
</div>

request标题如下......

Accept  text/html, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Type    text/html; charset=utf-8

可以做些什么来修复某些字符没有被正确转义的问题?我想过可能循环遍历data变量,只是用其ascii等价替换每个(但我更喜欢更通用的方法)。

2 个答案:

答案 0 :(得分:1)

需要使用HTML entities来显示这些字符:

http://www.danshort.com/HTMLentities/

那我会相信&lsquo;

要进行编码,因为您已经在使用jQuery,所以可以使用this method  编码段落元素的文本

答案 1 :(得分:1)

我很确定这不是ajax请求或任何JavaScript的问题。实际上,您在.ajax()的调用中不需要包含“contentType”选项。此外,这不是“逃避”而是“编码”的问题。您需要服务器正确编码响应,因此它是UTF-8。服务器还应将“Content-Type”响应头设置为“text / html; charset = utf-8”。首先,您可以检查ajax响应的响应标头的外观。但即使它们是正确的,这并不意味着响应实际上是正确编码的。您必须检查服务器代码以查看它正在执行的操作。