纸飞机 2011-07-23 02:37:02 4627次浏览 8条回复 0 0 0

blog/index.php?r=site/login

输入demo demo 链接数据库认证完全正常。 就算输入lsdkfjsdjf 密码lskdjflskdjf 也没问题,出现提示密码错误 然是只要用户名中有中文出现,就会出现 [attach]268[/attach]

而同样的代码在demo/blog里面是没有问题的。问问老大,什么回事呢?

  • 回复于 2011-07-23 02:54 举报

    我猜应该是这个问题

    PHP strtolower() 乱码问题
    strtolower()函数里面的参数的值如果是中文,例如strtolower("测试"),返回的结果会变成乱码...
    然后就google了一下,没有找到问题所在,却发现大家都极力不建议使用strtolower()这个函数...
    于是偶竭尽全力查找问题,系统是debian linux平台,很快投诉方提供了一台不会乱码的机器,于是偶开始对比两台机器的不同...两台机器是同一批机器,系统都是同一时间安装的...
    apache的配置文件,php的配置文件完全一样...一个头顿时变成两个大...
    最后发现 在phpinfo()的Environment这一节里面,不产生乱码的只有两个环境变量:LANG,PATH;可是产生乱码的那台机器就多了去了,而且LANG=US_en,连启动apache的时候从那个ip登录进来的都可以看到...感觉问题出在了apache上,差不多排出了php的问题。
    然后查看apache的配置文件...用env命令查看环境变量...用 /etc/init.d/apache restart 重起了一下,突然发现系统不再产生乱码了。奇怪啊?
    查了半天没有找到问题,然后只好去正常的那台机器上 apachectl restart 一下,很快就有人问为啥那台正常的也开始乱码了?
    立即开始思考刚才在正常的那台机器上做了什么?好像就是重起了一下apache...不过...我真的要佩服自己一下,我的手指完全不受控制的敲了history,让我发现重起apache的时候采用了不同的命令!
    /etc/init.d/apache restart
    apachectl restart
    立即使用 /etc/init.d/apache restart 重起apache,乱码症状消失,问题的一解决
    用vi打开 /etc/init.d/apache 发现原来启动Apache是这样的:
    env -i LANG=C PATH=/bin:/usr/bin:/usr/local/bin apachectl start
    如果你的apache安装在/usr/local/apache_1.3.34/bin 下,就要用:
    env -i LANG=C PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/apache_1.3.34/bin apachectl start

  • 回复于 2011-07-23 02:57 举报

    不过好像又不对,,我把strtolower删除了还是不行。

  • 回复于 2011-07-23 03:01 举报

    ERROR 1267

    看来是这个问题

    如果建表时使用的字符集和mysql默认的字符集不一样,在查询操作时,尤其是有中文字符的情况下,经常会出现如下错误:

    ERROR 1267 (HY000): Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'like'

    解决办法是:在执行mysql查询语句前,执行"set names gbk",gbk是建表是使用的字符集,请根据实际情况修改!

  • 回复于 2011-07-23 03:16 举报

    demo改成同样的数据库后也会出现
    Error 500
    CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

    哈哈

  • 回复于 2011-07-23 03:25 举报

    问题找到了。数据库建立的时候没有选对,重新建立数据库的时候选对编码就啥事都没有了 。哈哈

  • 回复于 2011-07-23 10:15 举报

    祝贺你解决问题,来晚了!

  • 回复于 2011-07-25 08:41 举报

    楼主夜间3点还挑灯夜战,精神可嘉啊!

  • 回复于 2012-09-13 10:17 举报

    我也出现同样的问题,看到你的帖子,我一下就解决了!
    感谢分享!

您需要登录后才可以回复。登录 | 立即注册