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.谢谢
# 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.谢谢
+--------------------------+-------------------
| 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)
String url ="jdbc:mysql://localhost/feige?user=root&password=webtest&useUnicode=true&characterEncoding=utf8" ; 主要是在命令行界面里面看到乱码。cammnad>mysql>
你先看看这个吧,http://topic.csdn.net/u/20071124/08/3b7eae69-ed1d-4a77-8895-9930bf3601af.html
不行再去精华区里翻.
通常都是因为你的java用的字符集和你数据库的字符集不一样.只要调成一样就可以了,数据库里要设置的地方n多.最好用utf8的编码.
我用的mysql 在可视化编辑工具是可以正常显示的
你查看一下mysql安装目录下的my.ini文件,在Mysql的安装中,如果默认安装,Mysql的字符集是latin1。看看默认编码是否为default-character-set=latin1,我看到我看到你程序里面写入和读出数据的时候都是把它转换成"
utf-8"编码,而且连接数据库的时候也是转换的,我就想不通了,难道你这程序还有用"utf-8"编码的需求???要不然会给人多此一举的感觉。
由于Mysql的字符集是latin1,所以在命令行打印的时候也是按latin1编码来显示的。但你实际存到数据库中的是utf-8编码,所以命令行会出现乱码咯。
其实我觉得你插入的时候不用特殊编码,然后在读取的时候转换成"gbk"编码就能显示中文了,你先试试看吧