今天运行 smarttemplate 模板的演示实例中的 basic/Special_Characters.php 时发现LINK变量里如果有中文会出现中文乱码的问题,开始以为是 charset 的问题,结果加了header('Content-Type: text/html; charset=utf-8');还是问题依旧。
记得以前 htmlentities() 函数出现过乱码问题,那可能就是因为模板里 htmlentities 的函数处理那里有问题了
将 smarttemplate_extensions/smarttemplate_extension_htmlentities.php 原代码中的
- function smarttemplate_extension_htmlentities ( $param )
- {
- return htmlentities( $param );
- }
修改为为如下代码,问题解决!
- function smarttemplate_extension_htmlentities ( $param )
- {
- return htmlentities( $param, ENT_QUOTES, "GB2312");
- }
具体函数使用方法参见PHP5手册。