简体   繁体   English

在Ajax-> PHP-> MySQL之后,HTML特殊字符编码不起作用

[英]HTML special characters encoding doesn't work after Ajax -> PHP -> MySQL

I have a setup which loads data from MySQL with PHP and displays it in HTML. 我有一个安装程序,可使用PHP从MySQL加载数据并将其显示为HTML。 It works so far. 到目前为止,它仍然有效。 All the characters are displayed how they should. 所有字符均显示为应有的状态。 But when I click a button to refresh a certain part of the site with $.ajax which calls PHP to refresh MySQL data, some characters are displayed as ?-marks, these are the characters which are MySQL data. 但是,当我单击按钮以$ .ajax刷新站点的特定部分时,该部分调用PHP刷新MySQL数据,某些字符显示为?标记,这些字符是MySQL数据。

HOME

<!doctype html>
<html>
    <head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript">
        $(function() {
            $("div#click input").live("click", function() {
                $("div#main").load("main.php");
            });
        });
    </script>
    </head>

    <body>
        <div id="main">
        é¨ûåa
        </div>

        <div id="click">
        <input type="button" value="click" onclick="return false;" />
        </div>
    </body>
</html>

Main.php Main.php

<?php
$a = mysql_connect('localhost', 'root', '');
mysql_select_db('link', $a);

?>
<div id="main">
ééîüåaa

</div>

<?php
$r = mysql_query("SELECT * from promo;");

while ($row = mysql_fetch_object($r)) {
        $name       = $row->name;
        echo $name;
}
mysql_close($a);
?>

MySQL table: MySQL表:

CREATE TABLE `promo` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT '',
  `link` tinytext NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

在创建mysql_query之前尝试使用此调用

mysql_set_charset("utf8")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM