【发布时间】:2011-02-22 02:24:13
【问题描述】:
我最近将我的一些页面更改为通过 ajax 显示,我对为什么 utf8 编码现在在框内显示问号而之前不是这样感到困惑。
例如。原始页面是 index.php。 charset 被明确设置为 utf8 并且位于 <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>
但是,当我进行更改以添加一个通过 ajax 填充“main_container”的菜单时,所有 utf8 编码都停止了工作。这是新代码:
<!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' >
<a href="#" onclick="display_html('about_us');"> About Us </a>
<div id="main_container"></div>
“display_html()”函数调用javascript页面,该页面使用jquery ajax调用来检索存储在php页面中的html,然后将html放在id为“main_container”的div中。我将 jquery 中的字符集设置为 utf8,例如:
$.ajax({
async: false,
type: "GET",
url: url,
contentType: "charset=utf-8",
success: function(data)
{
$("#main_container").html(data);
}
});
我做错了什么?
【问题讨论】:
-
我认为是BOM字节顺序标记问题google.it/…
-
如果您使用PHPMyAdmin,请单击左侧栏中的数据库,然后单击“操作”。最后一个选项是更改表排序规则,将它们设置为 utf8_general_ci 之类的东西,而不是在对所有数据进行良好备份之前!