Sybase数据库中的中文存储问题!

aihui 2002-04-01 09:54:06
我在E文的Solaris上用JRun3.0搭建JSP平台,通过JDBC调用另一台E文平台上的E文Sybase11,操作终端用的是中文Windows2000pro,结果如果页面上全部不加入<%@page contentType="text/html;charset=gb2312"%>,则输入和页面显示正常,这时候IE的编码是自动的,变成了iso8859_1,但是在Sybase数据库中中文全变成了相应的五位unicode码前后分别加上“&#”“;”,即“&#xxxxx;”,字长一下子由一位编程八位。各位兄台知道是怎么回事么?先谢过了
...全文
43 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aihui 2003-01-28
  • 打赏
  • 举报
回复
谢谢,这个问题我也是早就解决了,只是很久不来了,今天特来结贴
其实这个问题在sybase中文网站说明的很清楚,我现在是在jdbc连接的url上声明Jconnect的版本和所用的字符集就可以了
aihui 2002-06-21
  • 打赏
  • 举报
回复
java.sql.Connection Conn;//数据库连接对象
java.sql.Statement Stmt;//语句对象
java.sql.ResultSet Rs;//结果集对象
//登记JDBC驱动程序
String MyDriver="com.sybase.jdbc2.jdbc.SybDriver";
String url = "jdbc:sybase:Tds:192.168.0.1:5000/MSS?charset=cp850&jconnect_version=5";
我自己来回复吧,

String user="sa";
String password="";
Class.forName(MyDriver);
Conn=DriverManager.getConnection(url,user,password);
Stmt=Conn.createStatement();

参考了sybase官方网站的资料,加了charset和JConnect的设置,就ok了,在读出显示的时候就转一下。
<%!
public String convert(String str){
try{
byte[] bys=str.getBytes("ISO8859_1");
return new String(bys,"GB2312");
}catch(Exception ee){
return str;
}

}
%>
yakuu 2002-06-21
  • 打赏
  • 举报
回复
其实论坛已经有答案了。

分析原因就是:
ie转成ISO-8859-1后,jre通过jdbc将其转换为unicode编码。就是你看到的&#xxxxx;的形式。

所以,你需要设定页面的编码形式,或者设定jdbc的编码。
aihui 2002-04-02
  • 打赏
  • 举报
回复
请大家帮帮忙啦,100分啊

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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