【问题标题】:apostrophe character not correctly being converted to UTF-8 on ajax successajax 成功时,撇号字符未正确转换为 UTF-8
【发布时间】:2013-04-03 01:48:41
【问题描述】:

我发现字符 没有被正确转义并且正在生成字符

//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);
        }
    });
}

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

<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 等效项(但我更喜欢更通用的方法)。

【问题讨论】:

  • 那个字符是 U+2018,左单引号。你需要charset=utf-8吗?
  • 是的,代码很旧,刚刚编辑了问题,我正在用iso-8859-1 对其进行测试,看看是否会出现相同的结果(它确实发生了:()。
  • ISO-8859-1 会出现同样的结果不能。 jQuery contentTyperequest's 内容类型,这里重要的是服务器的 - 您没有显示。无论如何,服务器正在发送最有可能以 Windows-1252 编码的数据,绝对不是 UTF-8。响应头是什么?

标签: jquery html ajax utf-8


【解决方案1】:

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

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

我相信那是&amp;lsquo;

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

【讨论】:

  • 问题是htmlentity在检索过程中不是decoded正确,来自ajax函数。但是在页面刷新时是正确的decoded
  • 必须将字符编码为单个字符才能产生您所看到的结果。如果它是一个实体,最糟糕的情况是它会在文本中显示实际的实体代码
  • 感谢您的建议,我一直在编写此 jquery 以覆盖在 CMS 上(这是由其他人而不是我自己编写的。您的建议让我知道 text 不是在到达数据库之前或在输出期间被清理为 UTF-8,叹息)。
【解决方案2】:

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

【讨论】:

  • 是的,我刚刚注意到,在我看来,服务器在插入数据库时​​卫生状况不佳,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 2013-07-03
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
相关资源
最近更新 更多