Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 转换数据库数据以实现htmlspecialchars兼容性_Php_Mysql_Utf 8_Htmlspecialchars - Fatal编程技术网

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

Php 转换数据库数据以实现htmlspecialchars兼容性,php,mysql,utf-8,htmlspecialchars,Php,Mysql,Utf 8,Htmlspecialchars,因此,我的服务器最近升级到了PHP5.5,而htmlspecialchars()对于一些输入返回空白。这是因为PHP将函数更改为默认情况下使用UTF-8编码字符串 而不是改变我的多个大型网站中htmlspecialchars的每一个实例。。。我希望在字符串到达这个函数之前转换它们。也就是说,在mysql数据库中。我的应用程序是一个内部MVC框架,因此它将数据从DB加载到Articles类中。然后类对象被用于站点上的各个页面,如:echo(htmlspecialchars($article->ti

因此,我的服务器最近升级到了PHP5.5,而htmlspecialchars()对于一些输入返回空白。这是因为PHP将函数更改为默认情况下使用UTF-8编码字符串

而不是改变我的多个大型网站中htmlspecialchars的每一个实例。。。我希望在字符串到达这个函数之前转换它们。也就是说,在mysql数据库中。我的应用程序是一个内部MVC框架,因此它将数据从DB加载到Articles类中。然后类对象被用于站点上的各个页面,如:echo(htmlspecialchars($article->title));等等

我的mysql数据库目前正在使用带有latin1_general_ci排序规则的MyISAM表

当我使用PHPMyAdmin将Articles表上的排序规则更改为utf8\U unicode\U ci。。。。它仍然不能解决问题。我不明白为什么数据现在不是htmlspecialchars的正确编码

有什么建议吗

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

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

谢谢大家!

试试这个:)


我用它,而且效果很好:)

所以。。。一些修补发现,将我的DB连接对象的字符集设置为utf8可以修复它,即使DB表仍然是latin1\u general\u ci。这适用于读取和写入数据库,因此转换必须正确进行

$dbc->set_charset("utf8");  // Using mysqli built in PHP library.
注意-我只与英语和法语角色合作


我将使用它(以及将HTML页面标题字符集设置为utf-8)作为临时解决方案,直到我可以将我的应用程序的主副本转换为到处使用utf-8。

但是,如果我在Articles类中这样做,它确实会修复它(如果DB已经转换,为什么需要这样做?:$this->title=mb\u convert\u编码($this->title,“UTF-8”);这会如何改变表中数据的编码?这只会改变php和mysql之间接收到的数据。默认情况下,utf-8中不会传输任何内容,这将是默认编码,我的头中没有名称,但我多次使用此方法,这帮助我很好地更改连接字符集,并在fly。在我看到你的答案之前,我发布了一个类似的答案。这似乎是一个可行的临时解决办法。当然要注意,这只有在你的DB数据与转换兼容的情况下才有效。是的,当然:)但正如我所看到的,表格在utf-8中,应该有效吗?:/您不需要utf8中的表,事实上,您可以在mysql中存储您想要的任何内容(以任何形式),但是这种技术将自动使用utf-8,即使该表是utf-8;)例如,拉丁语1_瑞典语_ci非常有效,它只是解释数据的方法(如果您愿意,必须转换为哪种类型):)
$dbc->set_charset("utf8");  // Using mysqli built in PHP library.