最近,我更改了一些要通过ajax显示的页面,但对于为什么utf8编码现在在框内显示一个问号却不知道,我有些困惑。
举个例子。最初的页面是index.php。charset已显式设置为utf8,位于中<head>。然后我用php查询数据库
<head>
这是原始的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); } });
我究竟做错了什么?
编码不仅仅是指定meta标签和内容类型- 文件本身必须确实使用您指定的编码,否则您将获得mojibake。
检查所有内容是否都使用UTF-8,数据库,数据库连接,表列。检查您包含的所有静态文件是否也以UTF-8编码。