我正在使用以下代码加载内容:
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function(){
jQuery('.content-div').load("all-events.html");
});
</script>
然而,内容是在没有UTF-8中我想要的特殊字符的情况下加载的。 在某个地方提到过将它放在我的代码顶部:
$html = header('Content-Type: text/html; charset=utf-8');
但是我只有这个错误: '标题未定义'。
答案 0 :(得分:7)
感谢大家的帮助,不过我发现了什么问题。问题是将headers
添加到基本文本文件并未更改其实际编码。我在记事本中写了那个文件,无法检查编码是否正确。然后我在Notepad++
中打开它并设置该应用程序的编码。希望能帮助其他人解决这个问题:)
答案 1 :(得分:6)
我遇到了同样的问题,但原始海报接受的答案没有帮助。做一个波纹管动作为我解决了这个问题:
将检索到的文档扩展名从“.html”更改为“.php”。
将 .htaccess
文件添加到主页的主目录中,其中包含以下内容:
AddDefaultCharset UTF-8
以上两者的组合
有关此问题的更多信息:
使用Firebug检查响应和请求标头,可以看到服务器(Apache)返回以charset ISO-8859-1编码的内容。我需要的是UTF-8。
虽然所有文件都编码为没有BOM和
的UTF-8 header("Content-Type: text/html; charset=utf-8");
在主.php文件上被调用,动态包含的.html文件的元素被过滤掉,因为jQuery使用浏览器的.innerHTML
属性来解析检索到的文档并将其插入到当前文档中,如上所述作者:Mike Haboustak。有关详细信息,请参阅jQuery's documentation for load
。
答案 2 :(得分:1)
jQuery的load()
方法使用浏览器的innerHTML实现将请求返回的html加载到当前文档中。这意味着传入的html必须使用与当前文档相同的文本编码。您无法在UTF-8
文档中插入ISO 8859-1
个字符。
您需要在服务器上修复此问题,而不是在Javascript中。使用原始Html(包含jQuery)响应的服务器端代码需要包含具有正确字符编码的内容类型标头。如果你正在使用Php,我想你已经找到了一个如何做到这一点的例子。