DZ升级到PHP5.4的一个问题处理

      php 5.4.0 发布之后,很多人会想着要升级尝试一下,我也是尝鲜者之一,不过在尝鲜之后,我被困扰了。php 5.4.0 的改变有一些,但其中困扰我的是 它内置编码自 ISO-8859-1 改成了 UTF-8。初看起来,这并没有什么,但是,htmlspecialchars和htmlentities函数,默认会使用utf-8来处理字符串。如果输入的字符串是GBK编码,那么很抱歉, 返回的结果是空的, 输入的字符串被吃了。在DZ里面,大量使用到了htmlspecialchars函数,升级php 5.4所面临的问题将是极具挑战性的。 你会发现哪儿哪儿都不正常。痛定思痛,我在这里友情提醒大家,在这个问题没有解决之前,不要贸然升级。
目前官方没有解决方法,我们自己找到的解决方法有两个:
1、 改写我们自己的程序,将原来的 htmlspecialchars方法改写为
htmlspecialchars($string, NULL, 'GB2312');
2、 修改PHP 5.4的源码 ,打开ext/standard/html.c,转到 373行。
将 return cs_utf_8;
改为 return cs_gb2312;
重新编译php 5.4
改过之后,我们其实是把 php 5.4的默认编码改成了 gb2312
我提交给PHP的BUG反馈地址:https://bugs.php.net/bug.php?id=61354
官方的讨论:http://news.php.net/php.internals/58853

本文地址:http://www.92csz.com/31/1092.html
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog

你可能感兴趣的:(utf8,PHP5.4,dz)