使用php打印出数据库中的特殊字符时出错

时间:2010-11-23 19:47:07

标签: php mysql html

好吧,我正在尝试做的是从数据库中打印几行文本到一个页面,我遇到的问题是它在文本中看到类似'的内容,它发出?。所以我想知道有没有办法绕过这个?我知道HTML可以使用特殊字符,但我在这里处理动态数据。我确实尝试过这样做,但它只是不起作用:

<?php

include("connect.php");

$queryCurUser = "SELECT * FROM wn_current;";

$queryResult2 = mysql_query($queryCurUser, $conn) or
                   die ("queryResult Failed: ". mysql_error());

while ($row = mysql_fetch_array($queryResult2))
{

 $body = $row['body'];
    echo $row['heading'];
    echo"<br/>";
    if($body == "'"){
    echo"hot dog";
    }
    echo"<br/>";
    echo $row['pdflink'];

}

?>

5 个答案:

答案 0 :(得分:1)

您需要将数据库中使用的字符集更改为包含更多字符的字符集 - 例如UTF-8。

答案 1 :(得分:1)

您需要告诉浏览器数据的编码是什么。

这个标签最有可能解决你的困境:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

如果这不起作用,请尝试以下方法:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

答案 2 :(得分:0)

检查数据库表使用的字符集;您可能想要将其更改为使用UTF-8。还要考虑在回显输出上使用htmlentities()和正确的字符集来转换任何具有HTML字符实体等价物的字符,例如

echo htmlentities($body, ENT_NOQUOTES, 'UTF-8', false);

答案 3 :(得分:0)

如果您存储国际字符(á,ê等),您不仅需要为数据库选择正确的字符编码(例如UTF-8),还需要告诉浏览器使用正确的字符集,通过

元标记: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

或php标头: header("Content-Type: text/html; charset=utf-8");

此外,可能需要指定MySQL扩展应与mysql_set_charset()一起使用的字符集。

答案 4 :(得分:0)

$body=str_replace['"', "&quot;", $body];  // double quotes

似乎有效