我在web端,有关编码的地方都设置成了utf8 数据库连接串也是这样设置的: 
jdbc:mysql://localhost:3306/lovedb?useUnicode=true&characterEncoding=utf8 数据库表,字段编码都是utf8 
但是为什么写到数据库中确变成了gkb?真是怪事啊... 为什么我会说是gbk呢? set names gbk; 
select * from user_tb;-------------可正常显示 set names utf8; 
select * from user_tb;-------------乱码.. 
真是怪事啊

解决方案 »

  1.   

    是不是你的mysql引擎设置编码成gbk了
    或者查看你的数据库编码
      

  2.   

    并不是表示服务器编码是GBK. 你的服务器编码还是UTF8能否正常显示,和服务器编码没有关系,服务器编码只是决定你能存储什么字符,比如你要存繁体字,GB2312肯定不行.能否正常显示,和客户端编码有关,所以需要set names xxx
    记住XXX一定要选择对你客户端的字符集,否则就是乱玛
      

  3.   

    那为什么set names utf8; 
    select * from user_tb;-------------乱码.. 
      

  4.   

    那是因为你的显示终端的编码不是utf8,你用"set names 你的显示终端的编码"就可以正常显示了
      

  5.   

    因为你的DOS不支持UTF8的显示,所以虽然MYSQL中是UTF8,但传给你的DOS后,DOS工具无法正确显示。
    但当你在DOS中说明 set names 'gbk';之后,MYSQL会将UTF8的字符串翻译为 GBK 后再传回你的DOS,这样就可以正确显示了。
      

  6.   

    ACMAIN_CHM说的很有道理,我的机器上有和lz一样的情况,我刚才试过了,发现cmd的code page是936,字符集是gbk,不过当我按照网上的方式把chcp 65001改成utf8以后set names utf8以后,还是不能正常显示汉字。
      

  7.   

    set names gbk;只是影响客户端显示字符采用的编码,与MySQL数据的编码没有什么关系的.