用MS SQL和oracle9 太吃内存,有点大,全给卸载了.安装了mysql占内存小,方便使用!version:mysql-essential-5.1.36在MySQL Command Line Client显示中文一切正常;在eclipse中新工程,连接到mysql,读取一个表显示:代码:package com.mch.mysql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Mysql1 {public static void main(String[] args) {String url ="jdbc:mysql://localhost/test";String user="root";String password="******";try {Class.forName("org.gjt.mm.mysql.Driver").newInstance();Connection conn= DriverManager.getConnection(url,user,password);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("select * from pet");while(rs.next()){System.out.print("name:" + rs.getString(1));System.out.print("\t所有者:" + rs.getString(2));System.out.print("\tbirth:" + rs.getString("birth"));System.out.println();}rs.close();stmt.close();conn.close();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}}显示乱码?号.name:?í?í所有者:?????? birth:2007-08-21 name:???? 所有者:?????? birth:2007-06-12 name:?? 所有者:?????? birth:2007-08-21 name:°??? 所有者:???? birth:1999-03-30 name:Puffball 所有者:Diane birth:1999-03-30 在网上查了下,很多人都有这个问题,大部分人说修改my.ini文件,//原文件[client]port=3306[mysql]default-character-set=latin1[mysqld]port=3306default-character-set=latin1我把:default-character-set=utf-8[两处,大小写都试过]mysql不能启动.再改成default-character-set=gb2312可以正常启动,但在MySQL Command Line Client显示乱码,eclipse输出也是码乱.查了下mysql支持字符集,得到default-character-set=utf8要这样设置,中间没有杠[-],查看mysql使用的编码:引用:mysql> show variables like 'character\_set\_%';+--------------------------+--------+| 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 |+--------------------------+--------+7 rows in set (0.00 sec)mysql>插入数据:引用:mysql> insert into event values("猪猪",'2009-02-21',"发烧","打针就好了!");ERROR 1366 (HY000): Incorrect string value: '\xD6\xED\xD6\xED' for column 'name'at row 1mysql> insert into event values("zhu",'2009-02-21',"fashao","da zhen jiu hao le!");Query OK, 1 row affected (0.06 sec)插入中文失败,插入英文可以.查看看显示:引用:mysql> select * from pet-> ;+----------+--------------+----------+------+------------+-------+| name | owner | species | sex | birth | death |+----------+--------------+----------+------+------------+-------+| 脰铆脰铆| 脥玫脮帽露芦| 脰铆| n | 2007-08-21 | NULL | | 鲁卢鲁卢| 脥玫脮帽露芦| 鹿路| n | 2007-06-12 | NULL | | 脫茫| 脥玫脮帽露芦| 脫茫| t | 2007-08-21 | NULL | | 掳垄脜拢| 脩么脥镁| 脜拢| F | 1999-03-30 | NULL | | Puffball | Diane | hamster | f | 1999-03-30 | NULL || bile | Hane | defaster | f | 2004-09-30 | NULL |+----------+--------------+----------+------+------------+-------+6 rows in set (0.00 sec)另默认的那个字符集是8859-1,在这个状态下可以输入汉字.很怪,可能很简单,新手就是不会......再次作测试:default-character-set=gb2312ERROR 1366 (HY000): Incorrect string value: '\xB9\xD8\xD3\xF0' for column 'name' at row 1向表中插入中文字符时,出现错误。
mysql> select * from pet;+--------+--------+---------+------+------------+------------+| name | owner | species | sex | birth | death |+--------+--------+---------+------+------------+------------+| ?í?í | ?????? | ?í| ? | 2007-08-21 | 0000-00-00 || ???? | ?????? | ?? | ? | 2007-06-12 | 0000-00-00 || ?? | ?????? | ?? | | 2007-08-21 | 0000-00-00 |+--------+--------+---------+------+------------+------------+3 rows in set (0.02 sec)表中的中文字符位乱码。
解决办法:使用命令:mysql> status;--------------C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe Ver 14.14 Distrib 5.1.36for Win32 (ia32)Connection id: 1Current database: test1Current user: root@localhostSSL: Not in useUsing delimiter: ;Server version: 5.1.36-community MySQL Community Server (GPL) Protocol version: 10Connection: localhost via TCP/IPServer characterset: gb2312Db characterset: latin1Client characterset: gb2312Conn. characterset: gb2312TCP port: 3306Uptime: 6 min 31 secThreads: 1 Questions: 15 Slow queries: 0 Opens: 20 Flush tables: 1 Open ta les: 9 Queries per second avg: 0.38--------------查看mysql发现Db characterset的字符集设成了latin1,所以出现中文乱码。