为什么setString到oracle的是乱码?

cnshell 2002-12-16 05:03:20
代码片段如下;
<%@ 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);


...全文
55 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
funpig 2002-12-17
  • 打赏
  • 举报
回复
肯定是编码的问题。楼上的方法行
风-君子 2002-12-17
  • 打赏
  • 举报
回复
byte[] b;
b = RSIfx.getString(3).getBytes("iso-8859-1");
String s3 = new String(b);
System.out.println(s3);
cnshell 2002-12-17
  • 打赏
  • 举报
回复
就没有人碰到过类似问题吗?
郁闷!

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧