admin 发表于 2022-4-23 16:00:00

杰奇1.8以上版本出现的部分中文不显示的问题

杰奇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;}
页: [1]
查看完整版本: 杰奇1.8以上版本出现的部分中文不显示的问题