程序中需要往另外一个数据库里插入一条数据
本身的程序和数据库都是UTF-8  但是另一个数据库编码很乱,结果是插入不进去或者是乱码,CREATE TABLE IF NOT EXISTS `mem_m` (
  `MemM_LoginName` varchar(20) CHARACTER SET latin1 DEFAULT NULL COMMENT 'µÇ¼Ãû',就是这个字段,
show variables like 'character_set_%';显示如下
Variable_name  Value  
character_set_client utf8 
character_set_connection latin1 
character_set_database utf8 
character_set_filesystem binary 
character_set_results utf8 
character_set_server latin1 
character_set_system utf8 请教如何解决

解决方案 »

  1.   

    要用formatstr转译一下乱码的字段
      

  2.   

    iconv set names 都试过了 不行的
      

  3.   

    `MemM_LoginName` varchar(20) CHARACTER SET latin1 DEFAULT NULL COMMENT 'µÇ¼Ãû',
    就是
    `MemM_LoginName` varchar(20) CHARACTER SET latin1 DEFAULT NULL COMMENT '登录名',
    这个表实际上是在 gbk 环境中创建的
    虽然是 CHARACTER SET latin1 
    但表中的内容仍然是 gbk 的如果你只是想读取其中的内容,那么访问它时可不用
    set names 指令,如果要用,也应该是
    set names latin1
    读取到的内容用 iconv('gbk', 'utf-8', $MemM_LoginName) 转换成 utf-8 后使用如果想整表转换也是可以的,但要使用 mysqldump 工具而不是 phpmyadmin
    方法就不赘述了,你可以搜索一下 “gbk latin1”
      

  4.   


    老大,我不是要读取 而是要把数据写到这个表里面  我本地的程序和数据库都是utf-8
      

  5.   

    问题是我写入的时候用iconv转换成gbk也写不进去 
      

  6.   

    写进去后的话,是要转成 gbk 的,同样不要执行 set names ...
      

  7.   

    老大 解决了,。 不执行set names 是不行的 
    转成gbk插入不进去
    前面加入 ("set names latin1");  解决
      

  8.   

    你数据库连接校对编码是?几个都要统一才不会乱码,你的表的字符集或者数据库校对应该有latin字符集