来自数据库的引号标记在chrome中以菱形问号回显

时间:2013-10-03 09:38:49

标签: php mysql google-chrome utf-8 collation

我遇到一个奇怪的问题,当我的mysql数据库中的任何内容被检索并在php脚本中回显时,记录中的引号会被Google Chrome中的菱形问号所取代。

我的mysql数据库设置为collat​​ion: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以及其他各种方法,但仍然遇到同样的问题。

1 个答案:

答案 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