A-A+

dedecms php5.5汉字不显示问题 wampserver2.5问题

2014年12月14日 10:16 学习笔记 暂无评论 阅读 263 views 次

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

最近这几天在用最新的wampserver2.5程序搭建环境,真的很方便,但是在用dedecms5.7 SP1的时候,发现后台不显示汉字,而且好多功能都不正常,最终经过测试发现是htmlspecialchars这个函数的问题,因为php5.4以后这个函数有了变化,强制性的,可以看说明:
遂查看PHP手册,获知 htmlspecialchars 函数原型如下:

string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )
更新日志里面又有提到:

5.4.0 The default value for the encoding parameter was changed to UTF-8.
5.4.0 The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
PHP 从 5.4.0 版本开始第三个参数字符串编码的默认值改成了 UTF-8,而我这段代码中的中文编码正好是 GB2312 编码的,跟现在的默认参数不一致,于是更改调用参数如下:

$str = '中文字符串';
# 为了与旧环境兼容,这里第二个参数没有组合使用 PHP 5.4 新加入的 ENT_HTML401 常量
$str_converted = htmlspecialchars($str, ENT_COMPAT ,'GB2312');
echo $str_converted;
这样,“中文字符串”就可以正常显示了。为了使 PHP 5.4 之前环境中编写的代码能够向前兼容,建议调用 htmlspecialchars 函数的的时候都提供字符串编码参数。

所以呢,本人想到了一个解决方法就是在include\helpers\string.helper.php 封装一个函数,直接转换。

来都来了,不回复一句什么的吗?
标签:

给我留言