.load()杀死字符编码

时间:2011-10-28 01:02:08

标签: jquery

我正在使用以下代码加载内容:

<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'); 

但是我只有这个错误: '标题未定义'。

3 个答案:

答案 0 :(得分:7)

感谢大家的帮助,不过我发现了什么问题。问题是将headers添加到基本文本文件并未更改其实际编码。我在记事本中写了那个文件,无法检查编码是否正确。然后我在Notepad++中打开它并设置该应用程序的编码。希望能帮助其他人解决这个问题:)

答案 1 :(得分:6)

我遇到了同样的问题,但原始海报接受的答案没有帮助。做一个波纹管动作为我解决了这个问题:

  1. 将检索到的文档扩展名从“.html”更改为“.php”。

  2. .htaccess 文件添加到主页的主目录中,其中包含以下内容:

    AddDefaultCharset UTF-8
    
  3. 以上两者的组合


  4. 有关此问题的更多信息:

    使用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,我想你已经找到了一个如何做到这一点的例子。