注册 登录
编程论坛 J2EE论坛

为什么读出来的数据库内容显示乱码,而其他的不是乱码呢?

小猪笨笨 发布于 2006-05-30 09:00, 3763 次点击

我的代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="com.jspdev.product.*,java.util.*,java.io.*" pageEncoding="UTF-8" errorPage="error.jsp" %>
<%@ include file="trans.jsp"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<jsp:useBean id="product" class="com.jspdev.product.ProductBean" scope="page"/>
<body>
<center>
<h1>查看所有的商品</h1>
<table width=80% border="1" bgcolor="#0099CC">
<tr bgcolor="#009966" bordercolor="#990066">
<td>id</td><td>类别</td><td>名称</td><td>出厂商</td><td>价格</td><td>描述</td>
</tr>

<%


Collection products=product.getAllProduct();
Iterator it=products.iterator();
while(it.hasNext())
{
Product temp=(Product)it.next();
out.println("<tr bordercolor=#990066>");
out.println("<td>"+temp.getProductId()+"</td>");
out.println("<td>"+temp.getCategoryId()+"</td>");
try
{
out.println("<td>"+trans(temp.getName())+"</td>");
out.println("<td>"+trans(temp.getProducer())+"</td>");
out.println("<td>"+temp.getPrice()+"</td>");
out.println("<td>"+trans(temp.getDescription())+"</td>");
}
catch(Exception e)
{}
out.println("</tr>");
}

%>
</table>
<a href="index.html">返回</a>
</center>
</body>
</html>

运行结果是:一直不知道为什么,请大家指点指点!!

查看所有的商品

id 类别 名称 出厂商 价格 描述
0005 computer J2EE??????? ??????? 59.9 ???????
返回
19 回复
#2
疯子java2006-05-30 10:36
以下是引用小猪笨笨在2006-5-30 9:00:00的发言:

我的代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="com.jspdev.product.*,java.util.*,java.io.*" pageEncoding="UTF-8" errorPage="error.jsp" %>
<%@ include file="trans.jsp"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<jsp:useBean id="product" class="com.jspdev.product.ProductBean" scope="page"/>
<body>
<center>
<h1>查看所有的商品</h1>
<table width=80% border="1" bgcolor="#0099CC">
<tr bgcolor="#009966" bordercolor="#990066">
<td>id</td><td>类别</td><td>名称</td><td>出厂商</td><td>价格</td><td>描述</td>
</tr>

<%


Collection products=product.getAllProduct();
Iterator it=products.iterator();
while(it.hasNext())
{
Product temp=(Product)it.next();
out.println("<tr bordercolor=#990066>");
out.println("<td>"+temp.getProductId()+"</td>");
out.println("<td>"+temp.getCategoryId()+"</td>");
try
{
out.println("<td>"+trans(temp.getName())+"</td>");
out.println("<td>"+trans(temp.getProducer())+"</td>");
out.println("<td>"+temp.getPrice()+"</td>");
out.println("<td>"+trans(temp.getDescription())+"</td>");
}
catch(Exception e)
{}
out.println("</tr>");
}

%>
</table>
<a href="index.html">返回</a>
</center>
</body>
</html>

运行结果是:一直不知道为什么,请大家指点指点!!

查看所有的商品

id 类别 名称 出厂商 价格 描述
0005 computer J2EE??????? ??????? 59.9 ???????
返回

首先请先确认你页面编码到底是是什么?
你的编码格式用了gb2312,pageEncoding是utf-8,这里<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
还有请确认数据库的是不是已经都是乱码了
还有一些其他的原因哈
不过先把这些确定了,应该就很明了了

#3
xiuyuan1232006-05-30 15:57
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
#4
小猪笨笨2006-05-30 16:41
首先请先确认你页面编码到底是是什么?
你的编码格式用了gb2312,pageEncoding是utf-8,这里<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
还有请确认数据库的是不是已经都是乱码了
还有一些其他的原因哈
不过先把这些确定了,应该就很明了了

回答:我的编码是如题,是想读取数据库中的数据,到JSP页面中
数据库没有乱码
页面的其他汉字也没乱码,就从数据库读出来的汉字乱码了
#5
小猪笨笨2006-05-30 16:45

UTF-8也不行的 gb2312是汉字专用 utf-8是各语言通用 对中国用户来说使用gb2312和utf-8是一样的

#6
yangwudong2006-05-30 17:51
尽量统一一下,而且,需要和数据库里面统一!
#7
小猪笨笨2006-05-31 08:55

楼上的什么意思?我不大懂 我用的是SERVER 2000数据库 数据库里的内容不乱码

#8
bagger2006-05-31 13:20
插入数据库的时候就做一下字符集转换
这样就比较安全了
你说呢,
如果说的不对,请多包含!
#9
glamey2006-05-31 22:10
<%@ page contentType="text/html; charset=gb2312" language="java" import="com.jspdev.product.*,java.util.*,java.io.*" pageEncoding="UTF-8" errorPage="error.jsp" %>
这个怎么回事呢pageEncoding="UTF-8"
给你一个很好的答案,首先你的server2000是不是中文版的,要是中文版的那里边就不需要设置编码体制了,如果不是还要设置编码体制的。然后要保证数据库与jsp里边的编码体制的一样的,都是"GBK",在你的<body>之后写上<%request.setCharacterEnconding("GBK");%>就可以了,应该就不会出现问题了,建议你还是不要用sql server2000,还是用mysql 这个东西比较稳定,而且速度还快,
#10
dreame2006-05-31 22:54

数据量不是很大的话,确实是mysql好,开销小,可移植性强,安全也不错,速度也快

#11
小猪笨笨2006-06-01 10:16

回楼上两位老大 我没用MySQL 是因为我实在受不了它的在DOS下运行,不可视,太难受了,呵呵
太谢谢了

#12
Murray2006-06-01 12:36
MySQL肯定是好用的
#13
qingsure2006-06-02 09:05
String str=(String)session.getValue("school");str = new String(school.getBytes("ISO-8859-1"));
#14
majunjie2006-06-02 14:24

就是,在jsp里面,有时候总是出现乱码,原因个有不同,个位大哥们,谁能总结一下处理乱码的个中技巧啊,谢谢啊

#15
想你的天空2006-06-04 08:22
因为你数据库里本身就是乱码了,    先  XXX.getBytes("ISO-589-1");   XXX = new String(XXX);  再写入数据库.
#16
小猪笨笨2006-06-05 11:34

回楼上 数据库本身没有乱码

#17
小猪笨笨2006-06-05 11:52
回9楼 glamey 大哥:“在你的<body>之后写上<%request.setCharacterEnconding("GBK");%>就可以了,应该就不会出现问题了,” 报错了 setCharacterEnconding 有错
#18
bagger2006-06-05 13:12
<%request.setCharacterEnconding("GBK");%>
这个报错???
应该不会啊
我一直用这个的啊
#19
小猪笨笨2006-06-05 13:55
找不到方法 setCharacterEnconding(java.lang.String)
#20
念月思灵2006-06-08 15:56
我使用MySQL的时候也出现了一样的问题。
1