一个数据库DEFAULT CHARSET=utf8;A表中一个B字段varchar(20) CHARACTER SET latin1 DEFAULT NULL,现在已经存储了数据,用PHP程序可以正常显示中文,但直接在MYSQL中updateB字段就会乱码,怎么不改变数据库结构下更新这个字段?

解决方案 »

  1.   

    你用图形界面工具更新的?
    用cmd命令登录后
    use  database;
    然后
    set names  latin1;
    然后进行跟新,那样子更新进去的应该就是latin1的了
      

  2.   

    试过了,先用set names  latin1;再update数据,能更新但显示的是乱码,用GB2312、GBK都试过了没有用。
      

  3.   

    我用Navicat for MySQL 写SQL语句更新的,发现只有先set names latin1;后再用update才能执行,用别的都会报错,包括用utf8都不行,看来只有整体转换编码了,但又怕数据会出错。
      

  4.   

    mysqldump 导出,然后修改表定义为utf8,然后删除数据后再导入数据。
      

  5.   

    这个问题你只有把编码转换了才能解决问题啊!
    之前的数据要导出来再导进去,不然之前的数据字符集是不会改变的!
    如果不更改字符集,你就只有set names  latin1了!