关于mysql-connector-3.0.14在问题!
笔者在使用 mysql-connector时,正常的Query 可以查出中文程序如下
import java.sql.*;
public class mysqlqvb{
Connection con;
Statement st;
ResultSet rs;
public mysqlqvb(){
try{
String name="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost/qvb?user=root&password=xxx&useUnicode=true&characterEncoding=GBK";
Class.forName(name);
con=DriverManager.getConnection(url);
System.out.println("连接成功!"+url);
Statement st=con.createStatement();
String sql="select * from teacher";
ResultSet rs=st.executeQuery(sql);
System.out.println("查询成功!"+sql);
System.out.println("Id Name address year");
while(rs.next())
{
String id=rs.getString("id");
id=new String(id.getBytes("ISO-8859-1"),"GB2312");
System.out.print(id+" ");
String na=rs.getString("name");
na=new String(na.getBytes("ISO-8859-1"),"UTF-8");
System.out.print(na+" ");
String addr=rs.getString("address");
addr=new String(addr.getBytes("ISO-8859-1"),"UTF-8");
System.out.print(addr+" ");
String ye=rs.getString("year");
System.out.print(ye);
System.out.print("\n");
}
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
mysqlqvb cms=new mysqlqvb();
}
}
但在使用插入数据的时候
import java.sql.*;
public class imy{
Connection con;
Statement st;
ResultSet rs;
public imy(){
try{
String name="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost/qvb?user=root&password=xxx&useUnicode=true&characterEncoding=GBK";
Class.forName(name);
con=DriverManager.getConnection(url);
System.out.println("连接成功!"+url);
Statement st=con.createStatement();
String sql="insert into teacher (name,address,year) values ('邹衍','吉林长岭','1980')";
sql=new String(sql.getBytes("ISO-8859-1"),"UTF-8");
int rs=st.executeUpdate(sql);
System.out.println("查询成功!"+sql);
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
imy cms=new imy();
}
}
所插入的中文全是????
其中id 为数字int
其它字段均为字符,长度也够
请教高手!!! 有没有人能解决内码问题
!!
mysql 版本为fc4 本身带的
rpm -q mysql
mysql-4.1.11-2 下面是我的my.cnf 配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
#old_passwords=1
#skip-name-resolve
#skip-grant-tables
#default-character-set=gbk
user=mysql
basedir=/var/lib
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid 将这行去掉#
default-character-set=gbk
重新启动mysql
还是老样子
CLASSPATH中我已经加了mysql-connector-3.0.14-bin.jar
了
高手呀
我快死了
两天了
没解决呢 版主呢
??
出来说说吗? d :cry: 问错版了 需要先设定 codepage ,我记得是 SET NAMES="utf8" 一类的?
忘了,你 google 吧。从 mysql 4.1 开始,加入了国际多编码的支持,但也引入了这个问题。
旧版本给什么就是什么,现在不行了………………
页:
[1]