在数据中插入一条数据成功后能够显示是中文,但是数据库中的数据是乱吗?什么原因

解决方案 »

  1.   

    我也在头疼这个问题,但是只要网页可以读取好象也没什么影响。昨天有人告诉我这个方法你试试看:
    mysql4.1是比较烦人,支持多语言的细化设置,再加上phpmyadmin2.6也比较笨,默认就是改不动的utf8,怎么弄都乱码。
    好了,废话少说,我们来一步步解决这个问题:
    1.修改/etc/my.cnf文件,改成这样:
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    default-character-set=utf8[mysql.server]
    user=mysql
    basedir=/var/lib[mysqld_safe]
    err-log=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid注意:就是加入了一句default-character-set=utf8。2./etc/init.d/mysqld restart 重新启动mysql;
    3.打开phpmyadmin,选择lang为"Chines simplifies(zh-utf-8)",选择"MySQL 连接校对"为"utf8_general_ci "点“显示 MySQL 的运行信息”--“变量”,可以看到:
    character set client utf8 utf8
    character set connection utf8 utf8
    character set database utf8 utf8
    character set results utf8 utf8
    character set server utf8 utf8
    character set system utf8 utf8
    collation connection utf8_general_ci utf8_general_ci
    collation database utf8_general_ci utf8_general_ci
    collation server utf8_general_ci utf8_general_ci
    从这里可以看到character全部变成utf8了。
    有人要问,为什么都要改成utf8呢?改成GB2312不行吗?
    解释如下:
    我也不想改成utf8,只是phpmyadmin2.6在mysql4.1的时候只会用utf8,连其他页面的charset也都是utf8,改成gb2312一定会乱码,我们只能凑phpmyadmin了。
    只有在mysql3.23的时候,phpmyadmin才会多一个gb2312的页面charset,这时候是正常的。
    3.将以前的mysql3的库文件导入mysql4.1的库
    有两种情况:
    一是从phpmyadmin上导入,这时候你要注意的是在选择库文件的页面左下脚有个“文件的字符集:”,默认是utf8,要改成gb2312,否则导进去乱码;
    二是在linux下导入,这时候你需要先在库文件的头部加一行:
    SET NAMES 'gb2312'; 注意最后也是;号,别漏了。
    然后执行mysql -u用户名 -p密码 xxx.sql > 库名
    导入完成以后再用phpmyadmin打开看,里面的中文字就是正确的。
    4.从mysql4.1里导出库文件
    一.用phpmyadmin导出
    导出倒是问题不大,如果phpmyadmin的浏览页面里显示的中文是正常的,那么导出肯定也是正常的
    二.在linux上导出
    如果用mysqldump导出出现了乱码也没有关系,可以运行iconv来转换一下
    iconv -c -f UTF-8 -t GB2312 库文件名 > 新的gb2312的库文件名综上所述,你要注意:
    1。尽量在需要导入的库文件的开头加入SET NAMES 'gb2312';告诉mysql你要导入的是一个gb2312的文件;
    2。可能你需要这个:
    SET NAMES 'utf8';
    在登陆到mysql后用,把character的一些默认参数改到utf8上,有时可以减少一些困扰,不过也不是必须的。
    在mysql上使用:
    SHOW VARIABLES LIKE 'character_set_%';
    用来查看当前的状态。
    3.如果出现乱码也不要怕,一是你要注意留存原有的备份,二是用iconv来进行转化。
    在正常使用之前注意做导入导出的测试,确保万无一失。