杰奇1.8在使用5.3以上版本时,会出现分类无法显示;后台很多地方的中文不能显示的问题。
其实原因很简单,这是PHP 5.4 中经 htmlspecialchars 转义后的中文字符串为空的问题。 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 函数的的时候都提供字符串编码参数。 对应杰奇的,请修改globay.php文件,修改以下函数。 function jieqi_htmlstr($str, $quote_style = ENT_QUOTES){ $str = htmlspecialchars($str, $quote_style,'GB2312'); $str = nl2br($str); $str = str_replace(array(' ', '&'), array(' ', '&'), $str); return $str;}
|