我将内容存储在mysql数据库中。当我尝试使用PHP检索内容并使用html和CSS显示它时,其中一些显示这些特殊字符������。
我在HTML中声明了编码类型,用于呈现PHP内容,如下所示。
我还将这个添加到html文档的头部
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta charset="utf-8">
<!-- [portable options] -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0;" />
<meta name="apple-mobile-web-app-capable" content="yes" />
我发现检索到的内容显示特殊字符有什么错误?
这是包含从mysql
检索数据的PHP脚本的文档<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta charset="utf-8">
<!-- [loading stylesheets] -->
<link type="text/css" rel="stylesheet" href="css/style.css" />
<!-- [loading stylesheets] -->
<link type="text/css" rel="stylesheet" href="css/style.css" />
<link type="text/css" rel="stylesheet" href="css/flexslider.css" />
<!-- [loading scripts] -->
<script type="text/javascript" src="js/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<div class="blog-post">
<div class="wrapper">
<!--
<iframe frameborder="0" scrolling="yes" width="100%" height="500px"
src="debug/includes/news_index.php" name="" id="">
</iframe>
-->
<?php
// connection string constants
define('DSN', 'mysql:dbname=mydb;host=localhost');
define('USER', 'myadmin');
define('PASSWORD', 'mypwd2015');
// pdo instance creation
$pdo = new PDO(DSN, USER, PASSWORD);
// query preparation
$stmt = $pdo->query("
SELECT title, introtext, id, created, created_by, catid
FROM mytbl_items
");
// fetching results
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// if this returns 0 then it means no records are present
echo count($result) . "\n";
// the loop should print valid table
foreach ($result as $index => $row) {
if ($index == 0) echo '<div>';
echo <<<HTM
<span class="post-date">{$row['created']}</span>
<h2 class="blog-post-title">{$row['title']}</h2>
<p>
{$row['introtext']}
</p>
<p>
<a href='read_serverside.php?id={$row['id']}'><input type="button" value="Read More" /></a>
</p>
<div class="blog-meta">
<img src="img/avatar.png" alt="Avatar" />
<h4 class="blog-meta-author">{$row['created_by']}</h4>
<span>Category: {$row['catid']}</span>
</div>
HTM;
if ($index == (count($result)-1)) echo '</div>';
}
?>
</div> <!-- .blog-meta -->
</div> <!-- .blog-post #2 -->
</body>
</html>
我还应该做些什么来避免特殊的人物出现?
答案 0 :(得分:1)
尝试在PDO Connection上设置utf8字符集,如下所示:
<?php
$this->add_rate(array(
'id' => 'australia_post',
'label' => 'Australia Post',
'cost' => $cost_from_api,
));
答案 1 :(得分:0)
您的数据库中有一些字符在Unicode UTF 8中不存在。此格式无法识别数据,因此这些字符显示为奇怪的字符。我建议您将<meta charset="utf-8">
更改为@charset 'iso-8859-15'
或删除该行。如果这不起作用,您必须转到导致错误的数据并确定使用的编码类型。
答案 2 :(得分:0)
如果你有主控制器或前控制器,你应该放
header('Content-Type: text/html; charset=utf-8');
那边的某个地方。
如果您在开始输出html之前没有将该调用放在文件的最开头:
<?php header('Content-Type: text/html; charset=utf-8'); ?>
<!DOCTYPE html>
<html>
<head>
......
答案 3 :(得分:0)
这对我有用。 在HTML开始之前尝试这个。 我希望它也适合你。
<?php header('Content-Type: text/html; charset=iso-8859-15'); ?>
<!DOCTYPE html>
<html lang="en-US">
<head>