为什么setString到oracle的是乱码?
代码片段如下;
<%@ page contentType="text/html;charset=ISO8859_1"%>
......
ResultSet RSIfx=stmtifx.executeQuery("select * from " + tblName);
while(RSIfx.next()) {
ps = conn.prepareStatement("INSERT INTO " + tblName+ " VALUES(?,?,?,?,?,?,?,?,?,?,?)");
String s3 = RSIfx.getString(3);
out.println(s3); // 此处输出的是汉字,没有错
out.println( "<BR>" );
ps.setString(3,s3); // username 直接写入到Oracle数据库
.......
}
进入oracle查看记录,显示是一对乱码
如果将ps.setString(3,s3); // username 直接写入到Oracle数据库
修改为ps.setString(3,convertISOToGBK(s3)); ,进入oracle 则显示正常。
其中:
private String convertISOToGBK(String str) {
String tmp = "";
if (str==null)
return tmp;
try {
tmp = new String(str.getBytes("ISO8859_1"),"GB2312");
}catch (UnsupportedEncodingException ue) {
System.out.println("=======");
}
return tmp;
}
但是以上两种方法写入的结果在 读 都显示乱码:
String s3 = RSIfx.getString(3); // 直接 读
System.out.println(s3);