首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ajax时UTF8编码不起作用

使用ajax时UTF8编码不起作用
EN

Stack Overflow用户
提问于 2010-05-21 05:07:13
回答 4查看 40.3K关注 0票数 9

我最近更改了一些页面以通过ajax显示,我有些困惑,为什么utf8编码现在在框内显示问号,而以前没有。

前面的例子。原始页面是index.php。字符集已显式设置为utf8,并且位于<head>中。然后,我使用php查询数据库。

以下是原始的index.php页面:

代码语言:javascript
复制
<!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编码都停止了工作。这是新的代码:

代码语言:javascript
复制
    <!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,如下所示:

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

我做错了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-21 05:17:53

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

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

票数 7
EN

Stack Overflow用户

发布于 2010-05-21 05:29:48

你写了

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

你说的“存储在php页面中的html”是什么意思?如果您想加载数据并在其中显示为<div>容器,则加载的数据应该相应地格式化。我的意思是,它应该是真正的HTML代码片段。此外,与“contentType”一起指定“dataType”为"html“或"text”将是一个好主意。如果你没有指定任何东西,jQuery的最新版本将“根据响应的MIME类型,智能地尝试获取结果”。如果您知道“dataType”,最好在那里指定。如果你使用ajax,也要使用默认的'async: true‘,而不是'false’。

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

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

票数 1
EN

Stack Overflow用户

发布于 2015-01-20 17:00:52

确保所有文件都另存为UTF-8 (或UTF-8 w.o.BOM)。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2877852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档