对php5.4不止是郁闷,简直是愤怒了

单位上网进行限制,反而是好事,虽然博客很久没有更新了,但可以整出更为整装的时间来做事情。

工作之余,在单位已经建好的freenas服务器的作为存储的基础上,把一台硬盘有故障的i3hp台式机做了一台虚拟机主机,准备搭建一个单位的文件管理平台。

首先建了一个ubuntu12.10的虚拟机,没有网络的确不方便,只能安装默认的apache,而apache对codeigniter的支持真的没有nginx方便,但在上网机和自己工位机器来回跑了几趟之后总算解决了。

但后面的事情就没有那么简单了,程序开始编写就不顺利,表单提交按钮上面的中文不能显示,只能用英文,开始以为是apache的问题,但怎么修改也没有发现问题,而直接用html显示是没有问题的,那就是php的问题,但总也找不出设置的问题。这我也忍了,但后面form_input怎么也显示不出内容来,回到家里用自己家里的机器测试没有任何问题,后来吧input内容改为英文,结果就显示出来了。

回到家里搜索了一下,原来在PHP5.4中,string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ‘UTF-8’ [, bool $double_encode = true ]]] )
PHP 从 5.4.0 版本开始第三个参数字符串编码的默认值改成了 UTF-8,而GBK版本跟现在的默认参数不一致,所以会出现经 htmlspecialchars 转义后的中文字符串为空的问题。因为我用的字符集是gbk的,这就是按钮没有中文,input也显示不出中文的原因。

对这个结果我已经不是郁闷,而是愤怒了。apache不用我可以用nginx,可以用lighttpd,但既然进了php的大门,总不能改换门庭吧?!

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>