SQL server2000插入中文时出现乱码如何解决? 在线等...
jsp中调用bean:以下是bean里面的方法
public void executeUpdate(String sql)throws Exception{
sql=new String(sql.getBytes("GBK"),"ISO8859_1");
try{
conn=DriverManager.getConnection(sConnStr,username,password);
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql);
conn.close();
stmt.close();
}
catch(SQLException ex){
System.out.println("sql.executeUpdate:"+ex.getMessage());
}
}
这样做也不行!!!
问题点数:100、回复次数:9Top
1 楼aiyahujiejun(哦)回复于 2006-03-17 12:03:34 得分 0
在构造SQL之前 针对那些参数转码 不要对整条SQL转
试试吧Top
2 楼crazycl(陈利)回复于 2006-03-17 12:14:42 得分 0
往数据库中插入纪录时,先对中文纪录进行编码转换,然后再插入就不会出现问题了Top
3 楼doway(john)回复于 2006-03-17 12:15:31 得分 50
new String(sql.getBytes("GBK"),"ISO8859_1");
大多数情况下这样做刚刚好搞反了,通常应该是:
new String(sql.getBytes("ISO8859-1"),"GBK");
另外,这样做编码转换早就过时了,应该使用过滤器。
Top
4 楼ibiswang(神鸟)回复于 2006-03-17 12:29:56 得分 10
不用转码,在你的jsp中通过response.setCharactEncoding的方法将输出改为GBK或GB2312就行了,另外,注意应当在jsp执行代码的第一行就这么设定。Top
5 楼ibiswang(神鸟)回复于 2006-03-17 12:31:45 得分 0
另外,如果你的sql是由上个页面中传过来的,注意也调用request.setCharactEncoding来设定为GBK或GB2312,注意,你上个页面中的charactencoding应当中对应的gbk或gb2312..Top
6 楼dreamlins(颠覆)回复于 2006-03-17 12:37:04 得分 0
过滤器?能简单介绍一下吗?Top
7 楼guo__peng(guo__peng)回复于 2006-03-17 12:55:29 得分 40
String str=new String(sql.getBytes("iso-8859-1"),"GB2312");
这样应该就可以了,这是编码原因造成的。
关于过滤器,tomcat下有一个例子。
Top
8 楼rickhunterchen(千山鸟飞绝)回复于 2006-03-17 13:25:18 得分 0
过滤器的例子:
http://www.blogjava.net/rickhunter/articles/33571.htmlTop
9 楼xinxideyilian(心细的依恋)回复于 2006-03-17 13:35:33 得分 0
<%!
public String GBToUnicode(String strIn)
{
String strOut = null;
if(strIn == null || (strIn.trim()).equals(""))return strIn;
try{
byte[] b = strIn.getBytes("ISO8859_1");
strOut = new String(b,"GBK");
}
catch(Exception e)
{}
return strOut;
}
%>Top




