从数据库中检索到php时显示引号字符

时间:2012-06-16 02:04:33

标签: php html sql

我在数据库中存储大量文本。问题是,当我尝试存储引号(''“”not“')时,它们在数据库中存储得很好,但是当我从数据库中显示文本时没有显示。!

我尝试将sql中的排序规则更改为utf8_unicode_ci,仍然没有更改

(''“”not“')被方形黑框中的questain标记取代

列类型排序规则属性空默认额外操作

     2  qr_topics   text    utf8_unicode_ci     No  None

3 个答案:

答案 0 :(得分:1)

在显示之前,您需要运行数据库返回htmlentities()

$results = $pdo->fetchAll();

foreach($results as $result) {
    echo htmlentities($result['fieldQuotesAndOtherGoodies']);
}

这不仅是一种良好的做法(特别是在使用不同的字符集或括号<>时,您必须对其进行编码,因为它们将被解释为HTML标记),这是安全性也非常重要。您的站点可能容易受到XSS(以及CSRF)攻击,而无需对从数据库中检索的用户数据进行编码。

仅供参考:解决方案是简单地添加一个元标记,确保浏览器将HTML传递解释为UTF-8:

<meta charset="UTF-8" />

答案 1 :(得分:1)

mysql_query('SET CHARACTER SET utf8,NAMES utf8');

它对我有用!

答案 2 :(得分:0)

确保通过htmlentities()插入代码。在重新使用它时使用html_entity_decode()。我同意@PhpMycoder。使用字符集“utf-8”或您喜欢的任何字符集,但将其传递给函数。

发送到服务器时使用

htmlentities ($_POST['textarea'], ENT_QUOTES, 'utf-8');

and while retriving

html_entity_decode($_POST['textarea'], ENT_QUOTES, 'utf-8');