zoukankan      html  css  js  c++  java
  • mysql乱码处理一则

    用yii做了个投票的小东西,用了sqlite数据库。临上线时,因为考虑到压力问题,换成mysql。只有简单的几个表,直接手工建的。

    实际用时,发现数据库中保存的汉字成为????形式的东西。

    首先,yii是用了utf8的。config/mail.php中,mysql的连接参数里也有charset=utf8的设置。

    其次,建立mysql数据库时也是选了utf8的。建表时没细看。

    既然出了乱码,当然要想办法。

    先是去网上找了一些东西,要改这个改那个的,问题是我的php+mysql环境是用了phpnow建的,在其它机器上都运行完全正常,不象是配置文件有误。

    其次,怀疑是建表时没有注意到表的字符集。看了一下,果然表的字符集给默认设置成了latin-(瑞典)什么的东西,改成utf8-general-ci,(用了phpMyAdmin的表管理下面的“整理”),乱码依旧。

    试着手工在phpMyAdmin里有问题的表里增加一条带汉字的记录,出现错误:

        Warning: #1366 Incorrect string value: #xxxx #xxxx #xxxx... for column xxxx

     看来是mysql自身的问题。没办法,试着删除这个表,重建一个,建时选择utf8字符集,再试,一切正常了。

     ------------

    结论:

    一,库的字符集设好了看来还不够,表的字符集也要正确。

    二,表的字符集如果建表时设错了,用“整理”功能修改可能无效,需要重建表。 

  • 相关阅读:
    mybatis 枚举的支持
    windows系统下Disconf web安装-分布式配置管理平台
    Tomcat启动报Error listenerStart错误
    Java并发编程:volatile关键字解析
    深入理解java异常处理机制
    Java 常见异常种类
    Java RMI与RPC的区别
    Java的快速失败和安全失败
    mysql数据类型介绍(含text,longtext,mediumtext说明)
    DTO – 服务实现中的核心数据
  • 原文地址:https://www.cnblogs.com/anjo/p/2376495.html
Copyright © 2011-2022 走看看