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