JSP查询数据库产生乱码 不知道为何故
JSP查询数据库产生乱码 不知道为何故
<%@ page contentType="text/html;charset=gb2312"%>
String sql="select 公告标题,公告内容,公告时间 from 公告 order by 公告id desc";
String Notice="";
int i=0;
rs=stmt.executeQuery(sql);
while ((rs.next())&&(i<5))
{
String Time=rs.getString("公告时间").getBytes("ISO8859_1");
Notice="<h1><B>"+rs.getString("公告标题").getBytes("ISO8859_1")+":</B><font
color=black>"+rs.getString("公告内容").getBytes("ISO8859_1")+"</font><font
color=gray> "+Time+"</font> </h1>";
i++;
}
out.println("Notice");
问题点数:100、回复次数:6Top
1 楼rickhunterchen(千山鸟飞绝)回复于 2005-10-15 01:35:39 得分 10
看你用什么数据库。Top
2 楼cuifengqi0904(星愿)回复于 2005-10-15 08:05:59 得分 20
iso88591不是那样用,假设你有一参数名为name,将其获得的结果转换为汉字,写以下相关代码
String name=request.getParameter("name");
if(name==null)
{
name="";
}
byte b[]=name.getBytes("ISO-8859-1");
name=new String(b);Top
3 楼cutelion(MADEinCNNC)回复于 2005-10-15 08:44:12 得分 10
直接用rs.getString("字段名")应该可以啊,不要什么转换. 试试看Top
4 楼angelyangplus()回复于 2005-10-15 09:33:07 得分 30
数据库里的是iso8859_1码,网页上是gb2312码所以会这样,我的办法是写一个类
public static String isoToGB(String conStr){
String j_tempStr=null;
if(conStr!=null){
try{
j_tempStr=new String(conStr.getBytes("ISO8859_1"),"GB2312");
}catch(java.io.UnsupportedEncodingException uee)
{System.out.println(uee.getMessage());}
}
return j_tempStr;
}
然后在jsp页里用这个方法来转码就可^^Top
5 楼lianxiangpanjin(联想)回复于 2005-10-15 09:50:41 得分 10
楼上这位有得有理,应该结了Top
6 楼hy2003fly()回复于 2005-10-15 10:04:37 得分 20
编码问题已经有人解决了,我只是想提个建议:一般字段名不要用中文。还有rs.getString(1)里面的参数可以用数字,代表字段1,2,3.......。Top




