jdbc连接FreeBsd上的mysql数据库中文发生乱码的解决办法
2008-04-01 21:58
761 查看
在FreeBSD上安装数据库的时候没有把gbk安装上去,结果从windows系统上备份过来的mysql数据库不能导入到freebsd的mysql上,查找问题,结果是windows上采用的是gb2312的编码方式而在freebsd上的mysql却没有这种编码方式,只能打开Windows上的备份文件修改其中的DEFAULT CHARACTER SET gb2312修改成utf8这样才能把文件导入到freebsd的mysql中。
导入完毕后用ECLIPSE作了一个小程序用jdbc连接mysql中的数据库。结果发现是乱码。
在freebsd系统下查看mysql的status
mysql> status;
--------------
mysql Ver 14.7 Distrib 4.1.18, for portbld-freebsd6.1 (i386) using 5.0
Connection id: 52
Current database: schoolmis
Current user: root@localhost
SSL: Not in use
Current pager: more
Using outfile: ''
Using delimiter: ;
Server version: 4.1.18-log
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /tmp/mysql.sock
Uptime: 1 hour 17 min 51 sec
Threads: 2 Questions: 494 Slow queries: 0 Opens: 44 Flush tables: 1 Open tables: 19 Queries per second avg: 0.106
--------------
原来MySQL的默认编码了,一般不调整的话为latin1其实和ISO8859_1一样,所以在读取这些字符的时候要进行处理否则就会产生乱码
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager
.getConnection("jdbc:mysql://10.33.250.2/schoolmis?user=sa&password=sa&useUnicode=true&characterEncoding=utf8");
Statement stmt = con.createStatement();
// String strSQL="insert into student values('长城')";
// stmt.executeUpdate(strSQL);
// stmt.close();
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from ");
while (rs.next()) {
String str=new String(rs.getString("studentid").getBytes("ISO8859_1"),"GBK");
System.out.println(str);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
另外一种方式
当然在MySQL为latin1编码时,也可以存的时候用GBK了
Connection con=DriverManager.getConnection("jdbc:mysql://10.33.250.2:3306/user=sa&password=sa?useUnicode=true&characterEncoding=GBK");
Connection con = DriverManager
.getConnection("jdbc:mysql://10.33.250.2/schoolmis?user=sa&password=sa&useUnicode=true&characterEncoding=utf8");
Statement stmt = con.createStatement();
String strSQL="insert into student values('长城')";
stmt.executeUpdate(strSQL);
stmt.close();
导入完毕后用ECLIPSE作了一个小程序用jdbc连接mysql中的数据库。结果发现是乱码。
在freebsd系统下查看mysql的status
mysql> status;
--------------
mysql Ver 14.7 Distrib 4.1.18, for portbld-freebsd6.1 (i386) using 5.0
Connection id: 52
Current database: schoolmis
Current user: root@localhost
SSL: Not in use
Current pager: more
Using outfile: ''
Using delimiter: ;
Server version: 4.1.18-log
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /tmp/mysql.sock
Uptime: 1 hour 17 min 51 sec
Threads: 2 Questions: 494 Slow queries: 0 Opens: 44 Flush tables: 1 Open tables: 19 Queries per second avg: 0.106
--------------
原来MySQL的默认编码了,一般不调整的话为latin1其实和ISO8859_1一样,所以在读取这些字符的时候要进行处理否则就会产生乱码
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager
.getConnection("jdbc:mysql://10.33.250.2/schoolmis?user=sa&password=sa&useUnicode=true&characterEncoding=utf8");
Statement stmt = con.createStatement();
// String strSQL="insert into student values('长城')";
// stmt.executeUpdate(strSQL);
// stmt.close();
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from ");
while (rs.next()) {
String str=new String(rs.getString("studentid").getBytes("ISO8859_1"),"GBK");
System.out.println(str);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
另外一种方式
当然在MySQL为latin1编码时,也可以存的时候用GBK了
Connection con=DriverManager.getConnection("jdbc:mysql://10.33.250.2:3306/user=sa&password=sa?useUnicode=true&characterEncoding=GBK");
Connection con = DriverManager
.getConnection("jdbc:mysql://10.33.250.2/schoolmis?user=sa&password=sa&useUnicode=true&characterEncoding=utf8");
Statement stmt = con.createStatement();
String strSQL="insert into student values('长城')";
stmt.executeUpdate(strSQL);
stmt.close();
相关文章推荐
- JDBC连接mysql处理中文时乱码的一种解决办法
- java:jdbc连接数据插入中文数据乱码解决办法:
- JDBC连接mysql处理中文时乱码解决办法详解
- Python连接MySQL数据库通信实例以及中文乱码的解决办法
- java中利用JDBC向MySql数据库中插入中文出现乱码解决办法
- 【Android】连接网络读取文件内容中文乱码解决办法
- SecureCRT, SecureFX连接Linux时中文乱码解决办法
- Xshell客户端连接Linux服务器中文显示乱码问题的解决办法
- Asp.net MySql.Data.dll 连接mysql数据库中文乱码解决
- 【Linux利用远程SSH连接】SecureCRT中文出现乱码解决办法 Linux服务器技术
- mysql数据库中文乱码问题 解决办法
- Xshell4连接Linux系统中文显示乱码解决办法
- 【Linux利用远程SSH连接】SecureCRT中文出现乱码解决办法 Linux服务器技术
- 解决php连接mysql数据库中文乱码问题
- Xshell4连接,Linux系统中文显示乱码解决办法
- PHP连接SQL SERVER 数据库 PHP连接MYSQL数据库并解决中文乱码问题。
- java utf-8编码连接utf-8 mysql数据库,解决中文乱码
- Java JDBC-ODBC 连接 Access 数据库 中文乱码解决
- jdbc连接字符集为us7ascii的oracle数据库乱码解决办法
- 使用c3p0连接池操作mysql数据库中文乱码解决办法