Discuz! X3.2 R20141225版本发布了,DZ官方也没有具体说说这次更新到底更新了啥。

Discuz官方论坛的原话是:

本版本根据X3.2发布后收集的问题进行了修正, 使程序更加安全稳定。 建议 所有X3.2用户进行升级。

忍不住好奇心,稍微浏览了下更新包的代码。

除了普通的功能性补丁、安全性修复外,最让我惊讶的是,竟然针对php5.4以上版本出现的utf8编码问题修复了!

Discuz! X3.2 R20141225版本封装了一个新的函数:dhtmlspecialchars
截取一部分代码给大家伙瞧瞧:

if(PHP_VERSION < '5.4.0') {
                $string = htmlspecialchars($string, $flags);
            } else {
                if(strtolower(CHARSET) == 'utf-8') {
                    $charset = 'UTF-8';
                } else {
                    $charset = 'ISO-8859-1';
                }
                $string = htmlspecialchars($string, $flags, $charset);
            }

很好理解吧?当PHP版本低于5.4,使用PHP默认的htmlspecialchars函数转码,否则使用下面的规则,ISO-8859-1=GBK。

因为在PHP5.4.0以后,htmlspecialchars默认编码为utf-8了,而之前一直是ISO-8859-1。

照这样看,Discuz最新版支持PHP5.4那应该是没问题了。
那么问题来了,Discuz支持PHP5.5/PHP5.6吗?

在PHP5.4环境中,使用UTF-8版本,DISCUZ X3.2没有问题,GBK版本会出现编码问题,主要在UCENTER方面,可以手动修改部分文件解决。
Discuz! X3.2 R20141225版本发布后,我第一时间把PHP版本升级为最新的PHP5.6.4,经测试,论坛方面可以算是完美运行(测试为GBK版本),只有UCENTER登录界面依然存在乱码。
而Discuz! X3.2 R20141225在PHP5.4.36环境中运行,测试没有发现任何问题。

测试结果说明,Discuz! X3.2最新版本支持PHP5.6及PHP5.5(GBK版本的ucenter存在乱码),
对PHP5.4及以下版本兼容性最好。

QQ图片20150106160435.png

建议:UTF8版本可以使用PHP5.6,GBK版本的用PHP5.4。

这说明DZ毕竟还是有时局观,与时俱进,虽然还有改进空间。反观国内其它PHP系统,相形见绌啊。

之前关于PHP5.4和PHP5.6兼容性的评测,请看这里!

标签: 函数, php5.6, php5.4, discuz, htmlspecialchars

添加新评论