mysql5.1汉字乱码
使用mysql5.1,安装时使用默认的字符Latin1,由于这个数据库是公用的,所以配置不能改变
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 | C:\MySQL\MySQL Server 5.1\share\charsets\
+--------------------------+----------------------------------------------------
+
8 rows in set (0.00 sec)
在test用户下创建games表,表的编码是采用默认的编码,现在使用JSP将汉字写入表中,发现汉字为???,由于Tomcat也是公用的,不能修改Tomcat的配置文件,JSP编码为UTF-8,代码如下:
<%@ 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="123456";
String str1="东方不败";
String sql="insert into games(gamekey,title,content) values('A','"+str1+"','这是一个很好的电影')";
System.out.println(sql);
Statement stmt;
try{
Class.forName(driver);
}
catch(Exception e){
System.out.println("无法加载驱动程序"+driver);
}
try{
Connection con=DriverManager.getConnection(url,user,password);
System.out.println("数据库连接成功");
stmt=con.createStatement();
stmt.execute(sql);
}
catch(Exception e){
e.printStackTrace();
}
%>
尝试使用new String(str1.getBytes("ISO-8859-1"),"UTF-8")和new String(str1.getBytes("UTF-8"),"ISO-8859-1")来转换,结果表中还是乱码,这个问题研究了很久,还是找不到解决办法,有什么好的解决办法吗?谢谢!