经过测试,找到了问题的原因.
CI的文件都是utf-8编码的.而我新建的控制类是用ANSI编码的.这样就导致自定义控制类调用CI中CI_Input类的post()函数时,传递的参数是GBK编码的,当然就没有获得期望的参数,进而发现$_POST没有以这个参数为key的数据.出现了取不到值的现象.
现在解决方案有两个:
1.在调用的时候转换参数编码方式
$this->input->post(iconv("gbk", "utf-8", "中文"));
2.将新加的文件编码格式改成utf-8,参数正常传递
$this->input->post("中文");
以上两种方式都可以达到效果.第一种方式不可取,有诸多问题,建议第二种方式.
php数组是支持中文key的 不要用中文key吧。。。中文兼容性永远是大问题,毕竟计算机是外国人发明的。 Hex 发表于 2012-2-21 15:12 static/image/common/back.gif
不要用中文key吧。。。中文兼容性永远是大问题,毕竟计算机是外国人发明的。 ...
嗯,网页已经都改成是英文的了.但是帖子是问中文的为什么不能取到值.本着初衷,来发这个贴,来说明一下确实是可以用中文的.而不是一句"不能用中文"/"不支持中文". 谢谢指正,以后还得多学习
顺便请教一下:如果name是数据库中的变量名的话会带来什么风险? 这样用合适不?还是用其他的name,然后访问数据库之前做一个key的转换? 谢谢 恩,最好还是不要用中文key,不一定在哪个地方就出现问题了。{:1_1:} yadam 发表于 2012-2-21 20:46 static/image/common/back.gif
嗯,网页已经都改成是英文的了.但是帖子是问中文的为什么不能取到值.本着初衷,来发这个贴,来说明一下确实 ...
如果 name 没有经过验证就直接入库,那攻击者也可以构建这个 name,轻者导致 SQL 出错,重者导致数据库被攻击。 表单名字没有用中文的吧,我上来一看看懵了:D 表单名字没有用中文的吧,我上来一看看懵了:D
页:
1
[2]