我的mysql在安装的时候字符默认的为utf8;
下面是我见库   我查看 库与表的字符编码:| id | name | sex  | year |
+----+------+------+------+
|  1 | 杨坤 | 男   |   15 |
|  7 | dd   | ?    |   15 |
+----+------+------+------+
2 rows in set (0.00 sec)mysql> show create database test;
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.01 sec)mysql> show create table user;
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------------------+
| Table | Create Table                                                    |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------------------+
| user  | CREATE TABLE `user` (
  `id` int(4) NOT NULL,
  `name` varchar(10) DEFAULT NULL,
  `sex` varchar(9) DEFAULT NULL,
  `year` int(4) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------------------+
1 row in set (0.00 sec)
我用的是开发环境是myeclipse 8.5  ;
jdbC的版本为mysql-connector-java-5.113.jar;
编写代码如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
public class AddDemo {
public static final String  DBDRIVER="com.mysql.jdbc.Driver";
public static final String DBURL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
public static final String DBUSER="root";
public static final String DBPASSWORD="root";
public static void main(String[] args)throws Exception {

Connection conn=null;

PreparedStatement pstmt=null;
int id=7;
String name="dd";
String sex="男";
int year=15;
String sql="insert into user (id,name,sex,year)"+"values(?,?,?,?)";
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
pstmt= conn.prepareStatement(sql);
pstmt= conn.prepareStatement(sql);
pstmt.setInt(1,id);
pstmt.setString(2,name);
pstmt.setString(3,sex);
pstmt.setInt(4,year);
pstmt.executeUpdate();
pstmt.close();
conn.close();
}
}
结果能插入数据   但是中文编码为乱码;   有知道的朋有告诉下问题可能出在哪儿 先谢了

解决方案 »

  1.   

    你是如何判定是乱码的? 什么工具中?
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    我在DOS下创建 和查看 的数据库
      

  3.   

     今天我又 重装了mysql 默认的选择了utf8 但是我在dos下 插入数据时 提示出错  
    ysql> show  variables like 'character%';
    --------------------------+-------------------------------------------+
     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 Server 5.1\share\charsets\ |
    --------------------------+-------------------------------------------+
     rows in set (0.00 sec)ysql> insert into user values('1','hh','男','15');
    RROR 1366 (HY000): Incorrect string value: '\xC4\xD0' for column 'sex' at row
    到底怎么回事啊我 都快 崩溃了
      

  4.   

    在MYSQL命令行工具中,你需要先 set names 'gbk'; 然后再insert into user values('1','hh','男','15');
      

  5.   

    每句运行前加 set names '编码'