我遇到一个奇怪的问题,当我的mysql数据库中的任何内容被检索并在php脚本中回显时,记录中的引号会被Google Chrome中的菱形问号所取代。
我的mysql数据库设置为collation:utf8_general_ci
下拉记录的脚本部分如下:
<?php
echo '<div class="testimonialswrapper">';
// Retrieve Page Content //
$testimonialssql = <<<SQL
SELECT *
FROM `testimonials`
ORDER BY id DESC
LIMIT 5
SQL;
if(!$resulttestimonials = $db->query($testimonialssql)){
die('There was an error running the query [' . $db->error . ']');
}
while($rowT = $resulttestimonials->fetch_assoc()){
if ($rowT['company'] == ''){$name = $rowT['name'];}else{$name = $rowT['name'].' - '.$rowT['company'];}
$from = $rowT['from'];
$message = $rowT['message'];
echo '<p class="testititle">'.$name.'</p>';
echo '<p class="testifrom">'.$from.'</p>';
echo '<p class="testimessage">'.$message.'</p>';
}
echo '</div>';
?>
这包含在我的index.php中,其中包含以下设置:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我尝试过使用htmlenteties和stripslashes以及其他各种方法,但仍然遇到同样的问题。
答案 0 :(得分:1)
如果您看到UNICODE REPLACEMENTCHARACTER ,则表示您的浏览器正在尝试以Unicode编码方式读取文本,但遇到的值实际上并未以有效的Unicode编码进行编码,因此已被替换为不可解码。
这意味着您的数据库中的数据实际上不是UTF-8编码的,正如您在元标记中声明的那样。你可能在那里用Latin-1编码的卷曲引号。请参阅UTF-8 all the way through my web application (Apache, MySQL, PHP, …)和Handling Unicode Front To Back In A Web App。