向高手求救jsp读取SQLSERVER数据有乱码的问题,感激不尽!!!!!!!!
jsp+javabean+sqlserver
向数据库添加数据时,添加数字或是英文时可以正常进入数据库,也可以在前台正常查询出来
但是如果向数据库添加中文,则在数据库中显示为乱码;如果直接在后台数据库中用insert into中文到数据库,在前台读取也为乱码。希望各路高手不吝赐教!!!!1111
备注: 已经有filter.java的javabean文件,而且在syabase系统中可以消除乱码。
问题点数:20、回复次数:8Top
1 楼zhaohb1980()回复于 2005-02-20 22:22:15 得分 0
在jsp里加 <%@ page contentType="text/html; charset=GBK"%>
<%request.setCharacterEcoding("GBK");%>Top
2 楼dadunqingwa(打盹的青蛙)回复于 2005-02-21 09:50:04 得分 0
转码显示
<%request.setCharacterEcoding("GBK");%>或
<%request.setCharacterEcoding("gb2312");%>
Top
3 楼zxjcool(cool)回复于 2005-02-21 10:52:38 得分 0
jdbc驱动换成3.0,什么问题都解决了Top
4 楼haodong2006(今夜无人入眠)回复于 2005-02-21 11:18:19 得分 0
上面大虾们说的是在页面显示的问题,我现在是向数据库添加中文数据到数据库中变成乱码或是从数据库读取的中文在在前台是乱码
我的意思是说,java的内部编码格式是unincode,而SQLSERVER是ASCII码
如何把SQLSERVER的编码格式改成unicode(听说一般是在安装SQLSERVER时设置排序问题,可是我在安装时没有发现)
因为我写好了UnicodeToChinese和ChineseToUnicode的转换器(javabean),现在就是如何把SQL的内部编码和JAVA统一,想请高手们给一些解决方案,是在javabean里添加函数,还是修改数据库的排序方式。Top
5 楼guo__peng(guo__peng)回复于 2005-02-21 11:24:17 得分 20
Jsp中文乱码小议
-------郭鹏
Jsp是一个很热门的话题,但让大多数人都头痛的是JSP页面中的乱码问题,笔者身有体会;曾为了解决中文乱码问题郁闷了好几天,试了很多方法都不行。最后在JSP专业人士的帮助下,终于解决。之后笔者曾对此做了一些小的研究。
首先我们先了解一下问题的原因。一般情况在在每个JSP页的头部都有这样一条语句:
<% page contentType="text/html; charset=gb2312" %>这条语句决定了此页面使用GB2312编码形式,而在数据库中一般用的是iso-8859-1字符集存储数据. 而Java程序在处理字符时默认采用统一的ISO-8859-1字符集(体现Java国际化思想),所以在添加数据时,默认的字符集编码是iso-8859-1,而页面采用的是GB2312,所以就出现乱码问题。为解决此问题应在存储的时候把GB2312换转成iso-8859-1。有此时候在读出时也会出现乱码,那么只需反过来就可以了,把iso-8859-1转换成GB2312。
具体实例归纳了以下几点,也许会对大家有一些帮助。
1、 在建立JSP页面时应该注意在jsp页面的头部加入一下代码
<% page contentType="text/html; charset=gb2312" %>
此方法是解决JSP页面显示时的乱码。
2、 有时还需在HTML代码中的<head></head>中加入这句
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
3、 在bean中用的是iso-8859-1编码,在jsp中一般用GB2312编码,处理此类乱码问题如下
String str=new String(strName.getBytes(“iso-8859-1”),”GB2312”);
具体用到此方法的地方为,当提交表单到bean(bean的功能是存储数据到数据库)表单提交后,数据库中存入的数据确变成了????,因此在调用bean之前应对编码进行转换,方法:String str=new String(request.getParameter().getBytes(“iso-8859-1”),”GB2312”);
这样,存入数据库的数据库的数据就可见了。
4、 对于页面间的参数传递也可以用这个方法来处理乱码问题:
public String getStr(String str)
{
try
{
String temp_p=str;
byte[] temp_t=temp_p.getBytes("ISO8859-1");
String temp=new String(temp_t);
return temp;
}
catch(Exception e)
{}
return "null";
}
5、 在表单定义时加上这个属性有时也可以解决表单提交过程中出现的乱码
<form enctype="multipart/form-data"></form>
6、 提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.setCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。
Top
6 楼singedcat(以夢為馬)回复于 2005-02-21 14:20:51 得分 0
upTop
7 楼haodong2006(今夜无人入眠)回复于 2005-02-21 14:31:20 得分 0
首先谢谢楼上的高手-------郭鹏
我从事JSP开发也只有几个月,谢谢你总结得这么全面
我按你的方法试了一下还存在乱码问题,但是我能理解你列举的方法的原理,但是我在哪个环节上出现了一些我没有找到的问题
所以想直接向您学习,如果方便请留下您的MSN号码,或者是QQ号码
如果你不方便在网上留联系方式
请您加我的号码,MSN:haodong2006@hotmail.com
QQ:33360056
247716167Top
8 楼pengpong(网上飘)回复于 2005-04-26 21:10:49 得分 0
upTop
相关问题
- 新手上路--用JSP开发网站要如何学习(回帖感激不尽)
- 特急,特急,高手帮忙,感激不尽,感激不尽!!!
- 高分问:“怎样用JBUILDER来调试jsp程序?”小妹这厢有礼了!望各大哥大姐们鼎力相助,感激不尽!!!!
- 我晕了 !用jsp做前台 后台用sqlserver2000怎么也连不上 请各位大虾帮忙啊!!小地感激不尽
- 给点帮助感激不尽
- 高手,请指点!感激不尽!
- 送分求书 感激不尽 !!!
- JSP如何从sqlserver中读取图像
- 用MapX40,如何从数据库中读取图元数据然后在地图上显示,如何建立一个图元,保存到数据库中,如有源码,更是感激不尽。
- 用MapX40,如何从数据库中读取图元数据然后在地图上显示,如何建立一个图元,保存到数据库中,如有源码,更是感激不尽。




