我在数据库中存储大量文本。问题是,当我尝试存储引号(''“”not“')时,它们在数据库中存储得很好,但是当我从数据库中显示文本时没有显示。!
我尝试将sql中的排序规则更改为utf8_unicode_ci,仍然没有更改
(''“”not“')被方形黑框中的questain标记取代
2 qr_topics text utf8_unicode_ci No None
答案 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');