1。首先确定mysql5.0的配置表都是utf8的。my.ini
# CLIENT SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[client]port=3306[mysql]default-character-set=utf8# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf82.表的编码也是utf8的。
CREATE TABLE `user`(
`phonenum` char(15) collate utf8_bin NOT NULL default '',
`username` char(15) collate utf8_bin NOT NULL default '',
`isonline` integer collate utf8_bin NOT NULL default '1',
`streamsum` integer collate utf8_bin NOT NULL default '0',PRIMARY KEY  (`phoneNum`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='user';3.我用java写入数据库的时候String name = new String(u.name,"utf-8").trim();该name将要插入数据库。"insert into userfriend (phonenum,friend,friendname) values('"+user+"','"+phone+"','"+name+"')";
插入后查询数据库出现乱码。
4.用java把这些插进去的汉子获取出来name[i] = new String(u.name,"utf-8").trim();是正常的,可以显示汉字
5.问题,为什么插入数据库的时候,看到数据库是乱码呢。用command查看 dos cmd.
6.谢谢

解决方案 »

  1.   

    mysql> show variables like '%char%';
    +--------------------------+-------------------
    | Variable_name            | Value
    +--------------------------+-------------------
    | character_set_client     | utf8
    | character_set_connection | utf8
    | character_set_database   | utf8
    | character_set_filesystem | binary
    | character_set_results    | utf8
    | character_set_server     | utf8
    | character_set_system     | utf8
    | character_sets_dir       | D:\MySQL\MySQL Ser
    +--------------------------+-------------------
    8 rows in set (0.02 sec)
      

  2.   

    对了,我的数据库连接是用Class.forName("org.gjt.mm.mysql.Driver").newInstance(); //8859_1
    String url ="jdbc:mysql://localhost/feige?user=root&password=webtest&useUnicode=true&characterEncoding=utf8" ; 主要是在命令行界面里面看到乱码。cammnad>mysql>
      

  3.   

    用程序看一下结果,mysql命令行工具会和本机的设置有关
    == 思想重于技巧 ==
      

  4.   

    其实以前很多贴是关于乱码的解决的.
    你先看看这个吧,http://topic.csdn.net/u/20071124/08/3b7eae69-ed1d-4a77-8895-9930bf3601af.html
    不行再去精华区里翻.
    通常都是因为你的java用的字符集和你数据库的字符集不一样.只要调成一样就可以了,数据库里要设置的地方n多.最好用utf8的编码.
      

  5.   

    那天晚上跟好几个mysql朋友说,调试了,就是不行
      

  6.   

    命令行里不能正常显示,
    我用的mysql 在可视化编辑工具是可以正常显示的
      

  7.   

    我觉得是跟mysql的默认编码有关吧!
    你查看一下mysql安装目录下的my.ini文件,在Mysql的安装中,如果默认安装,Mysql的字符集是latin1。看看默认编码是否为default-character-set=latin1,我看到我看到你程序里面写入和读出数据的时候都是把它转换成"
    utf-8"编码,而且连接数据库的时候也是转换的,我就想不通了,难道你这程序还有用"utf-8"编码的需求???要不然会给人多此一举的感觉。
    由于Mysql的字符集是latin1,所以在命令行打印的时候也是按latin1编码来显示的。但你实际存到数据库中的是utf-8编码,所以命令行会出现乱码咯。
    其实我觉得你插入的时候不用特殊编码,然后在读取的时候转换成"gbk"编码就能显示中文了,你先试试看吧