我下载了一套源码,采用GB2312的页面编码。
其中调用了ckeditor及后台管理对中文的处理均采用是htmlspecialchars($value)来过滤掉HTML危险字符。
问题是不知道怎么的,经过是htmlspecialchars($value)处理中文后均为空?
后来看了资料说要这样调用:
htmlspecialchars($value, ENT_NOQUOTES, "gb2312")
问题是:我要都这么改,不是要改好多,再说了,像ckeditor开发者难道不知道这问题的存在吗?
急求简单一点的解决办法,最好不要改源码,有个全局设置或环境设置之类的,请大家帮忙一下,谢!
其中调用了ckeditor及后台管理对中文的处理均采用是htmlspecialchars($value)来过滤掉HTML危险字符。
问题是不知道怎么的,经过是htmlspecialchars($value)处理中文后均为空?
后来看了资料说要这样调用:
htmlspecialchars($value, ENT_NOQUOTES, "gb2312")
问题是:我要都这么改,不是要改好多,再说了,像ckeditor开发者难道不知道这问题的存在吗?
急求简单一点的解决办法,最好不要改源码,有个全局设置或环境设置之类的,请大家帮忙一下,谢!
这跟中文没关系啊,除非你传递进去的时候就是乱码之类的 .还是先检查你传递进去的内容吧
运行<?php
$str = "111<b>中文字符啦....</b>";
echo "原样输出为.$str <br>";
echo "处理后:" . htmlspecialchars($str);
?>返回真是空值。
没有作任何其它的处理。
其中的php是5.4版笨的吗?
还没有那么奢侈,我还在用php5.3.6如果真是 php5.4,请向php bug 网站通报错误
Apache 2.2.21 VC9
MySQL 5.5.19
PhpMyAdmin 3.4.9
Xdebug 2.1.2
$content = htmlspecialchars($_POST['content']);
添加,ENT_COMPAT ,'GB2312'之后解决了,还没找到什么更便捷的方法,
$content = htmlspecialchars($_POST['content'],ENT_COMPAT ,'GB2312');