高手相送,jsp连接oracle数据库后,显示数据为乱码? 建议你写数据库时,把字符变为gb2312保存,读出数据时,不用变换,但要确保你的叶面也是gb2312 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看你的jsp设了这个没有:<%@page language="java" contendtype="gb2312"%> <%@page language="java" contendtype="gb2312"%>在我的程序中有这句话。按前面那位老兄的建议:建议你写数据库时,把字符变为gb2312保存,读出数据时,不用变换,但要确保你的叶面也是gb2312结果保存到数据库中的信息为乱码(都是?????). 不好意思,好像敲错了,反正是设置页面属性的东东。把jsp页面设置成gb2312的 我原来用的是informix的数据库,作法跟你的一样,就没有问题。不过我也听说过可以在数据库中的是乱码,而取出的数据经过转换后就正常的说法。或者你可以试试把字符集换成GBK java.net.URLEncoder.encode(rs.getString("BZH"), 建议你这样写,这是我以前用过的处理中文乱的一个例子, 你看可以不可以? 可能与你的ORACLE字符集有关。 对了,你的oracle不要装汉化包,然后用你开始的方法存取中文,应该可以。如果装了汉化包,则在你的jdbc设置上codeset=GBK应该可以解决了。just try 你用程序查询的数据直接通过oracle的sqlplus输入sql语句察看一下,如果显示不是乱码的话,就不用对取出的数据进行转换了,如果是乱码就对其进行转换。 你用什么服务器的,如果是weblogic就好办了 我也试过类似的情况,后来在写入数据库时用转换函数getstr(),在从数据库读出来时直接读出,即加上<%@ page contentType="text/html;charset=gb2312" %>后去掉getst()就可以了public static String GetStr(String s){ try{ if(s==null||s.equals("")) return ""; String newstring=null; newstring=new String(s.getBytes("ISO8859_1"),"gb2312"); return newstring; }catch(Exception e) { return s; } } 可能跟你的oracle的字符集有问题;是不是用的UTF8? 简单方法<%@ page contentType="text/html;charset=8859_1" %> 在oracle里执行 SQL> select userenv('language') from dual;看你的字符集是什么?应该是SIMPLIFIED CHINESE_CHINA.ZHS16GBK才对,如果不对那就改吧!由于IE默认字符集为GB2312,然而Windows默认为GBK,Java则默认为Unicode,所以如果不通过一定的转换,直接在GB2312字符集上显示从GBK或Unicode得到的页面将是一片乱码。Java 语言采用Unicode处理字符,但从另一个角度来说,在Java程序中也可以采用非Unicode,重要的是保证程序入口和出口的汉字信息不失真。如完全采用ISO-8859-1来处理汉字也能达到正确的结果,经过转换之后并将网页字符集强制设为GB2312字符集显示,就能够正常显示汉字了。 我的oracle 字符集是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,应该是对的。 都设为GBK试试看吧!<%@ page contentType="text/html; charset=GBK" %> 1、确定数据库的字符集为GBK,2、接收JSP页面传过来的字符串(暂定名称为:ls_test)进行转换: ls_test= new String(ls_test.getBytes("ISO8859_1"), "GBK");3、进行查询、删除、修改等数据库操作。我已在本机调试成功,应该没有问题。你试一下 在你的显示页的第一行加<%@ page contentType="text/html;charset=gb2312"%>应该没问题.我的程序里全是这样的. 自定义标签uri找不到 在Weblogic8.1下报错,求!!! 转让培训机构内部视频培训录像(JAVA+Oracle)和相关书籍,要的进啊~~~ 请问有关Struts Message Resources的问题 百分求助 为什么能够访问WEB-INF下的文件. 老题新问:JSP图片上传显示问题?(在线急等) 一个无法理解的问题 请问大家一般用什么调试JSP c:if test比较两个字符串 我在jbuilder中生成了.war文件,请问它是什么文件?有什么作用 什么是CMP,什么是BMP?
<%@page language="java" contendtype="gb2312"%>
在我的程序中有这句话。按前面那位老兄的建议:
建议你写数据库时,把字符变为gb2312保存,读出数据时,不用变换,但要确保你的叶面也是gb2312
结果保存到数据库中的信息为乱码(都是?????).
建议你这样写,这是我以前用过的处理中文乱的一个例子,
你看可以不可以?
加上<%@ page contentType="text/html;charset=gb2312" %>后去掉getst()就可以了
public static String GetStr(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
return newstring;
}
catch(Exception e)
{
return s;
}
}
<%@ page contentType="text/html;charset=8859_1" %>
看你的字符集是什么?应该是SIMPLIFIED CHINESE_CHINA.ZHS16GBK才对,如果不对那就改吧!由于IE默认字符集为GB2312,然而Windows默认为GBK,Java则默认为Unicode,所以如果不通过一定的转换,直接在GB2312字符集上显示从GBK或Unicode得到的页面将是一片乱码。Java 语言采用Unicode处理字符,但从另一个角度来说,在Java程序中也可以采用非Unicode,重要的是保证程序入口和出口的汉字信息不失真。如完全采用ISO-8859-1来处理汉字也能达到正确的结果,经过转换之后并将网页字符集强制设为GB2312字符集显示,就能够正常显示汉字了。
2、接收JSP页面传过来的字符串(暂定名称为:ls_test)进行转换:
ls_test= new String(ls_test.getBytes("ISO8859_1"), "GBK");
3、进行查询、删除、修改等数据库操作。
我已在本机调试成功,应该没有问题。
你试一下
<%@ page contentType="text/html;charset=gb2312"%>
应该没问题.我的程序里全是这样的.