中文字符输出问题

lastromance 2004-10-11 02:01:08
我的程序如下:



<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
<html>
<body>
以下是从Ms sql server数据库读取的数据:<hr>
<table border=1>
<tr><td>id</td><td>书名</td><td>出版社</td><td>价格</td></tr>
<%! String trans(String chi)
{
String result = null;
byte temp [];
try
{
temp=chi.getBytes("iso-8859-1");
result = new String(temp);
}
catch(UnsupportedEncodingException e)
{
System.out.println (e.toString());
}
return result;
}
%>
<%

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev","bn","bn");
Statement stmt=con.createStatement();
ResultSet rst=stmt.executeQuery("select * from book;");
while(rst.next())
{
out.println("<tr>");
out.println("<td>"+trans(rst.getString("bookId"))+"</td>");
out.println("<td>"+trans(rst.getString("bookName"))+"</td>");
out.println("<td>"+trans(rst.getString("publisher"))+"</td>");
out.println("<td>"+rst.getFloat("price")+"</td>");
out.println("</tr>");
}
//关闭连接、释放资源
rst.close();
stmt.close();
con.close();
%>
</table>
</body>
</html>


结果在输出时在“书名”和“出版社”的下边是很多问号。
我用的是j2sdk1.4+tomcat5.0+sqlserver2000+ie6.0
请高手指教


...全文
103 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandxu 2004-10-17
  • 打赏
  • 举报
回复
如果还有乱码就是Ms sql server的jdbc驱动有问题了
....
sandxu 2004-10-17
  • 打赏
  • 举报
回复
nod
楼上兄弟的两个内码转换函数对付数据库中文问题够了
1、存数据到数据库 public String getGBK(String str)

2、取数据 public String getISO8859(String str)
booma 2004-10-17
  • 打赏
  • 举报
回复
public static String getGBK(String str) {
if (str == null)return null;
if (str.trim().equals(""))return str;
try {
return new String(str.getBytes("ISO-8859-1"), "GB2312");

}
catch (Exception ex) {
ex.printStackTrace();
return str;
}
}

/**
*
*/
public static String getISO8859(String str){
if (str == null)return null;
if (str.trim().equals(""))return str;
try {
return new String(str.getBytes("GB2312"), "ISO-8859-1");

}
catch (Exception ex) {
ex.printStackTrace();
return str;
}

}
QQ:27278617
sandxu 2004-10-17
  • 打赏
  • 举报
回复
数据库用ISO8859-1字符集存取数据,,jsp页面是GB2312。
首先,确定在数据库中保存的中文字符是正常的。
其次:
我觉得程序没问题。用此函数替代trans函数试试
public String Gb2ISO(String str)
{
try
{
return new String(str.getBytes("GB2312"));
}
catch(Exception e)
{return "";}
}
lastromance 2004-10-17
  • 打赏
  • 举报
回复
我知道你的意思了,是弄个javabean连接数据库吧?
可我要问的是“为什么我不能正常显示中文”???
cx1999 2004-10-17
  • 打赏
  • 举报
回复
用gb2312试试
lastromance 2004-10-17
  • 打赏
  • 举报
回复
我是菜鸟 来的
也是看书上的介绍
可我的结果和书上的不一样
  • 打赏
  • 举报
回复
告诉你个方法把。
把连接数据库的java代码放到java文件中去,只是把rs传到jsp中,那样就好了。。
你这种写法是我没出校门时候写的。
jsp->servlet==(调用java,得到rs)-->在把rs传给jsp中。在jsp中只要接受rs就够了。那样你试试,
你现在的这种写法,简直叫人笑掉大牙!!!!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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