使用mysql5.1,数据库表编码格式为UTF-8,如下所示:CREATE TABLE `game` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `gamekey` varchar(1) CHARACTER SET latin1 DEFAULT NULL,
  `title` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
  `content` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8创建一个JSP页面,编码也为UTF-8,JSP代码如下:<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%
String driver ="com.mysql.jdbc.Driver"; 
String url="jdbc:mysql://localhost:3306/test"; 
String user="root"; 
String password="root";
String characterEncoding="utf-8";
String str="大化西游"; 
String sql="insert into game(gamekey,title,content) values('D','"+str+"','defghijk')"; 
System.out.println("------------------");
System.out.println(sql);
System.out.println("------------------");
Statement stmt;
try{ 
Class.forName(driver); 

catch(Exception e){ 
System.out.println("无法加载驱动程序" +driver); 

try{ 
Connection con=DriverManager.getConnection(url,user,password); 
if(!con.isClosed()){ 
System.out.println("数据库连接成功");
stmt=con.createStatement();
stmt.execute(sql); 
}
con.close(); 

catch(Exception ee){ 
ee.printStackTrace(); 

%> 运行后,发现mysql数据库表中的title字段的值为???,如何才能正确将汉字插入表格中?
谢谢!

解决方案 »

  1.   

    你的表的编码就不对。怎么会是latin1 而不是UTF-8。
      

  2.   

    你设置成GBK 或者GB2312试试。
      

  3.   

    show variables like 'character\_set\_%'; 通过命令查看下mysql的数据库库编码格式是不是都是utf8
      

  4.   


    是UTF-8呀CREATE TABLE `game` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `gamekey` varchar(1) CHARACTER SET latin1 DEFAULT NULL,
      `title` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
      `content` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8
      

  5.   


    mysql> show variable like 'character\_set\_%';
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near 'varia
    ble like 'character\_set\_%'' at line 1
      

  6.   


    如果是上图的话,那么就转码吧。
    new String(str.getBytes("iso-8859-1"), "utf-8");
    等方法去转码。
      

  7.   

    mysql> show variables like 'cha%';
    +--------------------------+-------------------------------------------+
    | Variable_name            | Value                                     |
    +--------------------------+-------------------------------------------+
    | character_set_client     | latin1                                    |
    | character_set_connection | latin1                                    |
    | character_set_database   | latin1                                    |
    | character_set_filesystem | binary                                    |
    | character_set_results    | latin1                                    |
    | character_set_server     | latin1                                    |
    | character_set_system     | utf8                                      |
    | character_sets_dir       | E:\MySQL\MySQL Server 5.1\share\charsets\ |
    +--------------------------+-------------------------------------------+character_set_system是utf8 
      

  8.   

    说明你的没有设置对。通过命令可以修改编码的。
    不过我还是建议重装下。因为mysql重装也就是一分钟的事。
    在装的过程中,有个让你选择编码的过程,有个下拉列表框,你在那个下拉列表中选择utf8。并且选择前面的单选按钮。你安装的过程中,会明白的。
      

  9.   

    建议转码:
    byte temp[]= str.getBytes("ISO-8859-1");
    str = new String(temp);
      

  10.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspxMYSQL 看这个 普通情况注意下连库URL 和数据库的字符集 表的字符集 表字段的字符集 
      

  11.   

    my.ini的字符集也要设置 (话说回来如果你表字段的字符集不对 应该会提示异常的阿)