使用ajax时UTF8编码不起作用
我最近将一些页面改为通过ajax显示,我对utf8编码为什么现在在框内显示问号感到困惑,而以前不是 例如。最初的页面是index.php。字符集被显式设置为utf8,并且位于使用ajax时UTF8编码不起作用,ajax,utf-8,jquery,Ajax,Utf 8,Jquery,我最近将一些页面改为通过ajax显示,我对utf8编码为什么现在在框内显示问号感到困惑,而以前不是 例如。最初的页面是index.php。字符集被显式设置为utf8,并且位于中。然后我使用php查询数据库 以下是原始index.php页面: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head&
中。然后我使用php查询数据库
以下是原始index.php页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Title here</title>
</head>
<body class='body_bgcolor' >
<div id="main_container">
<?php
Data displayed via php was simply a select statement that output the HTML.
?>
</div>
我做错了什么?编码不仅仅是指定元标记和内容类型-文件本身必须是您指定的编码,否则您将得到 检查所有内容是否都在使用UTF-8、数据库、数据库连接和表列。检查您包含的任何静态文件是否也以UTF-8编码 你写的 “display_html()”函数调用 使用jquery的javascript页面 ajax调用检索html 存储在php页面中 “存储在php页面中的html”是什么意思?如果要加载数据并将其显示为
的一个包含项,则应将加载的数据格式化。我的意思是它应该是真正的HTML代码片段。此外,与“contentType”一起,最好将“dataType”指定为“html”或“文本”。如果您没有指定任何内容,jQuery的最新版本将“根据响应的MIME类型,智能地尝试获取结果”。如果您知道“数据类型”,最好在那里指定。如果您使用ajax,也可以使用默认的“async:true”而不是“false”
您还应该验证jQuery.load
方法(请参阅)是否是您的最佳选择。如果需要,您可以使用mathod加载整个html页面并仅显示其中的一部分:$(“#main#container”).load('ajax/about#us.html#container')代码>
关于UTF-8编码,别忘了保存真正经过UTF-8编码的文件。使用编辑器的相应选项(在记事本中选择“另存为”,然后选择“UTF-8”而不是“ANSI”)。确保所有文件都保存为UTF-8(或UTF-8 w.o.BOM)
如果您通过FTP或web工具上传了它们,请检查它们是否仍然是UTF-8。在我的情况下,在我放置
header('Content-type: text/html; charset=utf-8');
如果您使用PHPMyAdmin,单击左列中的数据库,然后单击“操作”,我认为这是一个BOM字节顺序标记问题。最后一个选项是更改表排序规则,将它们设置为utf8\u general\u ci之类的值,而不是在对所有数据进行良好备份之前!好的,我把我所有的文件,包括所有的include,从ANSI改为UTF-8。我查看了数据库,但不确定我找对了地方。列在“排序规则”下显示“拉丁语1_瑞典语ci”,但不确定这是什么意思。我如何检查db表/列是否为utf-8?另外,在我将所有文件保存到utf-8后,我现在收到一个错误,说明“无法发送会话缓存限制器-已发送头”
,但除了将文件保存为utf-8之外,我没有更改任何代码,在我这样做之前,一切都正常……不确定发生了什么。感谢您的帮助就像其他评论所说的,这与字节顺序标记有关。看到其他海报上的其他链接,还有好的,我已经阅读了所有其他帖子。基本上,他们说在
标记之前有一个空格或新行字符。我已经检查了所有代码和所有包含的代码,但仍然得到了相同的结果。我甚至删除了index.php页面中的所有代码,所以看起来是这样的:
…前后没有空格…没有包含其他可能影响页面的文件,当我重新加载页面时,我会收到相同的错误消息。然而,我决定将index.php页面重新保存为ANSI,错误消失了,但编码不好???如果您将index.php保存为UTF-8,然后在十六进制编辑器中打开它,您将看到确实有字符,谢谢您的帮助…有关于编辑器的想法吗?我只用过记事本,记事本2,dreamweaver,写字板。这些东西有用吗?
$.ajax({
async: false,
type: "GET",
url: url,
contentType: "charset=utf-8",
success: function(data)
{
$("#main_container").html(data);
}
});
header('Content-type: text/html; charset=utf-8');