使用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字段的值为???,如何才能正确将汉字插入表格中?
谢谢!
`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字段的值为???,如何才能正确将汉字插入表格中?
谢谢!
是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
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
如果是上图的话,那么就转码吧。
new String(str.getBytes("iso-8859-1"), "utf-8");
等方法去转码。
+--------------------------+-------------------------------------------+
| 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
不过我还是建议重装下。因为mysql重装也就是一分钟的事。
在装的过程中,有个让你选择编码的过程,有个下拉列表框,你在那个下拉列表中选择utf8。并且选择前面的单选按钮。你安装的过程中,会明白的。
byte temp[]= str.getBytes("ISO-8859-1");
str = new String(temp);