jsp连接oracle查询数据集,中文显示为16进制字符问题!请问为什么?

lguotao 2004-12-25 05:29:24
写法如下:
public String RsToGbook(ResultSet rs){
String tt="";
try{
tt+="<TR>";
tt+="<TD>"+rs.getString("studentid")+"</TD>";
tt+="<TD>"+rs.getString("studentname")+"</TD>";
tt+="<TD>"+rs.getString("gender")+"</TD>";
tt+="<TD>"+rs.getString("phone")+"</TD>";
tt+="</TR>";
}catch(SQLException e){}
return tt;
}tt;
...全文
103 点赞 收藏 7
写回复
7 条回复
lguotao 2005年01月07日
怎么这种问题没人能解吗?
现在问题是JSP页面的中文及直接写在JSP的HTML的语句如<TD><%=rs.getString("PHONE") %></TD>
均可显示,但用如下写法却不可显示:
public String RsToGbook(ResultSet rs){
String tt="";
try{
tt+="<TR>";
tt+="<TD>"+rs.getString("studentid")+"</TD>";
tt+="<TD>"+rs.getString("studentname")+"</TD>";
tt+="<TD>"+rs.getString("gender")+"</TD>";
tt+="<TD>"+rs.getString("phone")+"</TD>";
tt+="</TR>";
}catch(SQLException e){
}
return tt;
}
回复 点赞
lguotao 2005年01月06日
to mxlmwl(飞星):驱动是用oracle的安装目录/jdbc/lib目录下的class12.jar,且已解压。

to mafirst(mafirst):试过用
studentname = new String(studentname.getBytes("ISO8859_1"), "GB2312");但出错提示studentname为不可识别的字符.studentname的值从数据集中得到.
代码如下:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.lang.Math.*"%>
<jsp:useBean id="conn" scope="page" class="db.connoracle3"/>
<%!
ResultSet rs=null;
String sql="";
String str="";
int Page=3;
int PageSize=6;
public String ShowOnePage(ResultSet rs,int Page,int PageSize){
str="";
try{
rs.absolute((Page-1)*PageSize+1);
}catch(SQLException e){
}
for(int iPage=1;iPage<=PageSize;iPage++){
str+=RsToGbook(rs);
try{
if(!rs.next()) break;
}catch(Exception e){
//System.err.println(ex.getMessage());
}
}
return str;
}
public String RsToGbook(ResultSet rs){
String tt="";
try{
tt+="<TR>";
tt+="<TD>"+rs.getString("studentid")+"</TD>";
tt+="<TD>"+rs.getString("studentname")+"</TD>";
tt+="<TD>"+rs.getString("gender")+"</TD>";
tt+="<TD>"+rs.getString("phone")+"</TD>";
tt+="</TR>";
}catch(SQLException e){
}
return tt;
}
%>
<%
sql="select * from student";
try{
rs=conn.executeQuery(sql);
}
catch(Exception e){
out.println("访问数据库出错!");
}
%>
<html>
<head>
<title> 分页浏览数据库例</title>
</head>
<body bgcolor="#ffffff">
<h2><ALIGN="CENTER">JSP中的分页控制,VERSION1</h2>
<hr>
<center>
<Table border >
<TR>
<TH bgcolor="white">学员编号</TH>
<TH bgcolor="white">学员姓名</TH>
<TH bgcolor="white">性别</TH>
<TH bgcolor="white">联系电话</TH>
</TR>
<%
out.println(ShowOnePage(rs,Page,PageSize));
%>
</table>
</center>
</body>
</html>
回复 点赞
lguotao 2005年01月06日
自己UP下!
请问是否是显示字段值的写法有问题啊!
因为在另一个页面用如下写法却可以显示:
<Table border bgcolor=#00FFFF>
<TR>
<TH bgcolor="white">学员编号</TH>
<TH bgcolor="white">学员姓名</TH>
<TH bgcolor="white">性别</TH>
<TH bgcolor="white">联系电话</TH>
</TR>
<% if (rs!=null){
while(rs.next()) { %>
<TR>
<TD><%=rs.getString("STUDENTID") %></TD>
<TD><%=rs.getString("STUDENTNAME") %></TD>
<TD><%=rs.getString("GENDER") %></TD>
<TD><%=rs.getString("PHONE") %></TD>
</TR>
<%}
rs.close();}
%>
</Table>
回复 点赞
wjr1982et 2004年12月28日
楼主的问题是什么,说清楚点好吗?究竟是什么显示
为16进制的字符啊。
希望把相关的代码都贴出来,好帮你分析下!
回复 点赞
lguotao 2004年12月28日
自已up下,请高手多帮忙!
回复 点赞
mafirst 2004年12月28日
把中文字段进行8859到2312的转码就可解决问题。
studentname = new String(studentname.getBytes("ISO8859_1"), "GB2312");
回复 点赞
mxlmwl 2004年12月28日
你的oracle驱动包不对,比如你的oracle是9i的,而你用的是8i的驱动包,就会出现这个问题.到你的oracle的安装目录下,找到jdbc/lib目录下,使用那个class12.jar包就ok了.
回复 点赞
发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告