有个问题一直不明白。我用JDBC往mysql里面写一行记录。我在Java程序里面直接写中文。但是在mysql里面看到的却是乱码。请问这个问题是怎么回事阿?谢谢各位!

解决方案 »

  1.   

    修改mysql的默认字符集是通过修改它的配置文件来实现的。一般分两种情况:
    [编辑]
    Windows平台windows下的mysql配置文件是my.ini,一般在c:\windows\my.ini或者c:\winnt\my.ini可以直接在这个文件里面加上default-character-set=gbk #或gb2312,big5,utf8然后重新启动mysqlservice mysql restart或/etc/init.d/mysql restart或用其他方法重新启动,就生效了。
    [编辑]
    Unix平台linux下的mysql配置文件是my.cnf,一般是/etc/my.cnf,如果找不到可以用find命令找一下:find / -iname my.cnf在这个文件里面加上default-character-set=gbk #或gb2312,big5,utf8然后重新启动mysqlnet stop mysql
    net start mysql就生效了。
      

  2.   

    创建表如着样  CREATE DATABASE `test` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
      

  3.   

    To yueliangdao0608:
    好像不行。我用的是linux,mycnf是这样的:
    [mysqld]
    #This option makes InnoDB to store each created table into its own .ibd file.
    innodb_file_per_table
    default-character-set=utf8但我用数据库管理工具去看还是乱码,在命令行下用mysql命令去看,还是乱码(我的console也是UTF8)。但是从数据库里面读出来到Java String里面就对了。所以我的程序跑起来表面没什么编码不一致,但是我进入数据库里面一看就是乱码。为什么呢?To zj318503533() :我用数据库管理工具去看,表中每个field的Charset都是UTF8编码。我的操作系统的locale都是UTF8. 为什么还有不一致的情况呢?谢谢!
      

  4.   

    1. jdbc的Connection中url参数:jdbc:mysql://localhost/DATABASE_NAME?useUnicode=true&characterEncoding=UTF-8,
    其中“useUnicode=true&characterEncoding=UTF-8”这段有没有,没有就要加上。2. 建立数据库时候:
    create database DATABASE_NAME DEFAULT CHARACTER SET utf8;
    其中:“DEFAULT CHARACTER SET utf8” 要加上,这样就表示该数据库 DATABASE_NAME 下的所有表和字段(char, varchar)默认是utf8.
    另外你在mysql上看,这究竟是在linux下命令行状态下看还是在MySQL Query Brower下看呢?
    如果在linux命令行下看多数会乱码,如果在MySQL Query Brower是乱码就按上面2点所改就可以了。
      

  5.   

    恩。的确是的,用Query Browser看没有问题,但是命令行下不行(我的locale已经是utf8了。)谁有解?
      

  6.   

    谢谢你,在你的提示下我联想到查查mysql的参数,发现了--default-character-set=utf8。可以了。
    谢谢!