php - 转换数据库数据以实现 htmlspecialchars 兼容性

标签 php mysql utf-8 htmlspecialchars

所以,我的服务器最近升级到 PHP 5.5,并且 htmlspecialchars() 对于某些输入返回空白。这是因为 PHP 更改了函数以默认使用 UTF-8 编码的字符串。

而不是更改我的多个大型网站中 htmlspecialchars 的每个实例...我希望在字符串到达​​此函数之前对其进行转换。即在mysql数据库中。我的应用程序是一个内部 MVC 框架,因此它将数据从数据库加载到 Articles 类中。然后该类对象在网站的各个页面中使用,如下所示: echo( htmlspecialchars( $article->title ) );等等

我的 mysql 数据库当前使用带有 latin1_general_ci 排序规则的 MyISAM 表。

当我使用 PHPMyAdmin 将 Articles 表上的排序规则更改为 utf8_unicode_ci .... 时,它仍然无法解决问题。我不明白为什么数据现在没有采用 htmlspecialchars 的正确编码?

有什么建议吗?

(注意,我知道重写 htmlspecialchars 函数的运行时解决方案是一种解决方法,但这在我的共享主机上是不可能的。

我还知道我可以在整个网站上搜索和替换,以将所需的编码传递给该函数的每次出现,但由于我的网站很大并且其中几个已编码/经过其他构建过程,因此改变这么多文件是不可能的。 )

谢谢!

最佳答案

试试这个:)

$bdd = new PDO('mysql:host=YOURHOST;dbname=DATABASE', 'USER', 'PASSWORD', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

我用过它,效果很好:)

关于php - 转换数据库数据以实现 htmlspecialchars 兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34188673/

相关文章:

ruby - 从 1.9.3 开始,如何在 Ruby 中获取 YAML 以将 ASCII-8Bit 字符串转储为字符串?

ruby-on-rails - 如何使用 OpenSSL::Cipher 加密 UTF-8 字符串中的数据?

php - 在 php 页面上获取 woocommerce 产品价格

php - 尽管权限正确,Web PHP 实例仍无法运行可执行文件

php - 如何将参数传递给mysql中的存储函数?

MySql:用于拆分、返回表的存储过程

python - ElementTree 和 unicode

php - 获取 HTTP 错误 500.0

MySQL选择重复项

mysql - 如何监控并自动重启mysql?