使用AJAX检索的UTF字符不会显示在Safari中

时间:2009-06-19 11:32:00

标签: javascript html encoding escaping

我遇到问题,将通过Ajax检索到的内容呈现在Safari(v.4)下的HTML页面中。 页面存储在UTF-8中,Ajax响应也是UTF-8编码。

解析加载的内容,然后使用解析的数据填充不同类型的列表。 其中一个很简单<选择>使用普通代码设置选项文本的元素:

option.innerHTML = "";
option.appendChild(document.createTextNode(text));

我的文字包含法文字符。 作为上面的代码的结果<选择>元素显示选项,这个法语文本分为两部分,其中分隔符(一些很酷的法语字母)根本没有显示... :(

使用

option.innerHTML = escapeGtLtAmp(text);

有相同的结果。

如果将法语内容设置为某些< div>然后显示的文本没有拆分,只是省略了非英文字母。

在Firefox 2下,似乎工作正常。

2 个答案:

答案 0 :(得分:0)

  

页面存储在UTF-8中,Ajax响应也是UTF-8编码。

AJAX响应是否也将Content-Type-HTTP-header设置为UTF-8?

答案 1 :(得分:0)

我在Firefox 3中遇到了类似的问题,似乎问题是ajax调用。我也尝试更改请求标头但问题仍在继续。所以我尝试从iframe加载数据,从而完全避免ajax,然后获取iframe的innerHTML。

如果您正在使用jquery,或许this little plugin可以帮助您或只是给您一个想法