奇怪的乱码问题,急!

chianti_2019 2004-09-06 12:29:26

郁闷我都用了,把他转化为中文了,怎么插到数据库中还是乱代码??
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean id="conn" class="opendb.opendb" scope="page"/>
<jsp:useBean id="str" class="mybean.str" scope="page"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<link href="Style.css" rel="stylesheet" type="text/css">
</head>
<%
String name=(String)request.getParameter("name");
name=str.getstr(name);
String password=(String)request.getParameter("password");
password=str.getstr(password);
session.putValue("name",name);

String sql="insert tb_admin(name,password) values('"+name+"','"+password+"')";
int col=conn.executeUpdate(sql);
out.println("col:"+col);


%>
我的两个bean文件:
opendb.java
package opendb;
import java.sql.*;
public class opendb
{
String sdbdirver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=web_jsp";
String user="sa";
String password="xishui";
Connection conn=null;
ResultSet rs=null;
Statement stmt=null;
int col;
int del;
public opendb()
{
try{
Class.forName(sdbdirver);

}
catch(java.lang.ClassNotFoundException e){
System.err.println("opendb():"+e.getMessage());
}

}
public ResultSet executeQuery(String sql) throws Exception
{
try{
sql= new String(sql.getBytes("GBK"),"ISO8859_1");
conn=DriverManager.getConnection(url,user,password);
Statement

stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.out.println("executeQuery(sql)"+ex.getMessage());
}
return rs;
}
public int executeUpdate(String sql) throws Exception
{
sql= new String(sql.getBytes("GBK"),"ISO8859_1");
try{
conn=DriverManager.getConnection(url,user,password);
Statement

stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_SENSITIVE,java.sql.ResultSet.CONCUR_UPDATABLE);
col=stmt.executeUpdate(sql);
}
catch(SQLException ex){
System.out.println("executeUpdate(sql)"+ex.getMessage());
}

return col;
}


}
str.java 如下:
package mybean;
public class str
{
public static String getstr(String s)
{
try
{
byte[] a = s.getBytes("ISO-8859-1");
return new String(a, "gb2312");
}
catch(Exception exception)
{
return s;
}
}
}
我可以插入成功了,就是遇到中文的时候怎么还是出现乱码?????
大侠们帮助小弟下!!!!

...全文
203 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chianti_2019 2004-09-07
  • 打赏
  • 举报
回复
谢谢各位大侠,特别谢谢 skymark126(叮咚)
ittraining 2004-09-06
  • 打赏
  • 举报
回复
http;//j.topcool.net/ittraining/ittraining1.htm
bubbletang 2004-09-06
  • 打赏
  • 举报
回复
最好设置为UTF-8,同时设置一request到action的filter,encoding也设为UTF-8.这样就可以国际化了,管什么GB2312,当然DB要支持你要的语言.
但我遇到另一问题,
就是-----------------
有谁知道如何解决struts里的File元素提叫中文档名的乱码问题啊?
我连人带分一起送了!
shangqiao 2004-09-06
  • 打赏
  • 举报
回复
但是不要作为灵丹妙药,不同的JDBC驱动是不一样的,要试才可以
alexlex 2004-09-06
  • 打赏
  • 举报
回复
另外还有数据库的问题,都可能导致乱码
skymark126 2004-09-06
  • 打赏
  • 举报
回复
并且都没有用这句sql= new String(sql.getBytes("GBK"),"ISO8859_1");
都可以解决你的问题!
shangqiao 2004-09-06
  • 打赏
  • 举报
回复
如上,通过网络传来的数据编码格式为iso-8859-1编码,但是sqlserver假如连接不设定编码格式的话,取系统默认编码,即gbk编码,所以传入服务器的sql语句必须为gbk编码,所以sql=new String(sq.getBytes("iso-8859-1"),"gbk"),肯定可以,至少写入数据库的数据库不会出现乱码了,至于出来的数据是什么编码格式,忘了,sqlserver好像是gbk编码,所以假如你的页面设为了gbk编码的话,那么就不用转化了
alexlex 2004-09-06
  • 打赏
  • 举报
回复
getParameter之前
request.setCharacterEncoding("gb2312");

另外getParameter已经是返回String的,不需要转型
skymark126 2004-09-06
  • 打赏
  • 举报
回复
str.java代码如下:
package mybean;
public class str
{
public static String getstr(String s)

{
String aaa;
try
{
byte a[] = s.getBytes("ISO-8859-1");
aaa= new String(a);
}
catch(Exception exception)
{
exception.printStackTrace();
}
return aaa;
}
}


应该是这样吧!试试看!
chianti_2019 2004-09-06
  • 打赏
  • 举报
回复
(opendb.java)去掉这行代码:sql= new String(sql.getBytes("GBK"),"ISO8859_1");
我都去掉了,怎么还是乱码啊!!!!
大侠。。。。哭。
是不是,我的str bean 的问题啊!!!
但是在我转化的时候前台显示出来的就不是乱码,到我插到数据库的时候就会乱码了。。。
郁闷。。。
CHLC 2004-09-06
  • 打赏
  • 举报
回复
你先要进行转换,longjava(青春向往) 说的对!
longjava 2004-09-06
  • 打赏
  • 举报
回复
(opendb.java)去掉这行代码:sql= new String(sql.getBytes("GBK"),"ISO8859_1");

81,122

社区成员

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

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