使用ajax时UTF8编码无法正常工作

我最近改变了一些我的页面通过ajax显示,我对于为什么utf8编码现在在一个盒子里面显示一个问号,而在它没有之前有一些混乱。

例如。 oringal页面是index.php。 charset明确设置为utf8并且在 。 然后我用php来查询数据库

Heres是原始的index.php页面:

     Title here   

但是,当我进行更改以添加通过ajax填充“main_container”的菜单时,所有utf8编码都停止工作。 这是新代码:

      Title here    About Us  

“display_html()”函数调用javascript页面,该页面使用jquery ajax调用来检索存储在php页面中的html,然后将html放在div中,其id为“main_container”。 我将jquery中的charset设置为utf8,如:

 $.ajax({ async: false, type: "GET", url: url, contentType: "charset=utf-8", success: function(data) { $("#main_container").html(data); } }); 

我究竟做错了什么?

编码不仅仅是指定元标记和内容类型 – 文件本身必须真正采用您指定的编码,否则您将获得mojibake 。

检查所有内容是否都使用UTF-8,数据库,数据库连接,表列。 检查您所包含的任何静态文件是否也以UTF-8编码。

你写了

“display_html()”函数调用javascript页面,该页面使用jquery ajax调用来检索存储在php页面中的html

你对“存储在php页面中的html”是什么意思? 如果要加载数据并在那里显示为

的包含,则应将已加载的数据格式化为对应的。 我的意思是它应该是真正的HTML代码片段。 此外,与’contentType’一起,将’dataType’指定为“html”或“text”是个好主意。 如果您没有指定任何内容,jQuery的最后一个版本将“根据响应的MIME类型智能地尝试获取结果”。 如果您知道’dataType’,那么最好在那里指定。 如果使用ajax,则默认使用’async:true’而不是’false’。

您还应该validationjQuery.load方法(请参阅http://api.jquery.com/load/ )是否是您的最佳选择。 如果需要,您可以使用mathod加载完整的html页面并仅显示其中的一部分: $('#main_container').load('ajax/about_us.html #container');

而关于UTF-8编码不要忘记保存文件真正的UTF-8编码。 使用编辑器的相应选项(在记事本中选择“另存为”,然后选择编码“UTF-8”而不是“ANSI”)。

确保所有文件都保存为UTF-8(或UTF-8 wo BOM)。

如果您已通过FTP或Web工具上传它们,请检查它们是否仍为UTF-8。

就我而言,在我放置之前,这两种解决方案都没有效

 header('Content-type: text/html; charset=utf-8');