紧急,关于JSP读取和写入oracle数据库时,出现在乱码

wyun0 2004-10-12 07:35:03

读取数据时,数据库中原来正确的中文字体,输出到页面以后全部都变成乱码.

我在写入的时候,全部都进行了转换,可是写入库以后还是乱码.

这个是代码:
public String getStr(String str){
try{
String temp_p=str;
byte[] temp_t=temp_p.getBytes("ISO8859-1");
String temp=new String(temp_t,"GBK");
return temp;
}catch(Exception e){}
return "null";

在本地测试的时候,数据的读写都是正确的,可上传到网上以后对数据库操作时,就全部变成了乱码.

Web服务器是Win2000+Tomcat,数据库是Linux+oracle的.

请问大家这是什么原因啊??怎么解决啊??
...全文
331 点赞 收藏 16
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyun0 2004-10-13
读写出现的不是"???"这类的乱码,全不都是一些特殊字符. 不知道是什么原因造成的.本地的jdk和tomcat与网上的版本都是一致的,配置也是一样 郁闷啊~~~~~
回复
bp69 2004-10-13
String temp=new String(temp_t,"gb2312");试试看
另外,jsp中<%@ page contentType="text/html; charset=gb2312" %>
回复
ningIII 2004-10-13
写入不要转看看呢??

读出时如果乱麻,需要转

public static String ISOtoGB(String iso){
String gb;
try{
if(iso.equals("") || iso == null){
return "";
}
else{
iso = iso.trim();
gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
return gb;
}
}
catch(Exception e){
System.err.print("编码转换错误:"+e.getMessage());
return "";
}
}
回复
nwpulipeng 2004-10-13
混分
回复
wyun0 2004-10-13
win2000是中文版的,数据库也是中文版的

我以前是用ASP做的,数据的读写都是正常的,现在换用JSP以后,读写才开始出现乱码问题的
回复
ningIII 2004-10-13
可能数据库服务器上的字体不对吧~
回复
禽兽v5 2004-10-13
那个windows 2000是什么语言?简体中文,英文?繁体中文?

也要查数据库的字符集.
回复
qiyongjun2003 2004-10-13
你机器和服务器机器上Oracle的字符集不一致
建议不要字符转换试试。
回复
wyun0 2004-10-13
我用的是XP,网上的win2000,但都是用的Tomcat5同一个版本.JDK我也用的是同一个版本,jdbc也是同一个驱动,唯一不同的是网上oracle客户端是816的,而我自己用的是9i.oracle数据库同样都是9i,一个是windows的,一个是linux. 但网上提交和读取的数据全部都是乱码.本地的机子却能够正常显示
回复
yuqianloveme 2004-10-13
-----------------------------------------------------------------
byte[] temp_t=temp_p.getBytes("ISO8859-1");
String temp=new String(temp_t,"gb2312");

也有可能是你的jdbc 有问题,不行的话换Oracle 8.1.7的JDBC驱动.
------------------------------------------------------------------



----------------------------------------------------------------------
String ss=new String(rs.getString("字段").getBytes("8859-1"),gb2312);
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;
}
}
这是个内码转换函数 每次调用就可以了 我经常用这个的 没有问题!!记得给分 !!
--------------------------------------------------------------------------




-----------------------------------------
java.net.URLEncoder.encode(rs.getString("BZH"),
-----------------------------------------------


-----------------------------------------------------
1、确定数据库的字符集为GBK,
2、接收JSP页面传过来的字符串(暂定名称为:ls_test)进行转换:
ls_test= new String(ls_test.getBytes("ISO8859_1"), "GBK");
3、进行查询、删除、修改等数据库操作。
我已在本机调试成功,应该没有问题。
你试一下
------------------------------------------------------

还有一种是你的库的class12不是最新的,你到ORACLE 官方网站下载一个新的就行了。以前我也遇到这种情况,后来就是下载一个新的class12就行了
回复
wyun0 2004-10-13
用5.0.27也不行

现在还发现用JDBC写数据时,数据库会出现死锁现象的.

大家帮帮忙啊~~~
回复
54dd 2004-10-13
5.0.27 没有这种问题。。。 
回复
wyun0 2004-10-13
真是头痛啊~~还是解决不了~~~
55555555555555
回复
朋友别哭 2004-10-12
up
回复
[苦行僧] 2004-10-12
不好意思 我暂时不知道!
回复
禽兽v5 2004-10-12
网上的系统和你的相同吗?
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告