最近,我更改了一些要通过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);
            }
});

我究竟做错了什么?

最佳答案

编码不仅仅是指定meta标签和内容类型-文件本身必须确实使用您指定的编码,否则您将获得mojibake

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

关于ajax - 使用Ajax时UTF8编码不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2877852/

10-15 00:15
查看更多