标题:[求助]jsp连接sql server数据库乱码问题
只看楼主
liuhde
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-11-25
结帖率:100%
 问题点数:0 回复次数:4 
[求助]jsp连接sql server数据库乱码问题

我写的这段代码连接sql server出现了中文乱码问题,能不能给我点提示将问题解决啊。
我的代码如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%!
public static String getGBString(String src) {
try {
return new String(src.getBytes("ISO-8859-1"), "gb2312");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
}
%>

<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user="sa";
String password="sa";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement
(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{%>
您的第一个字段内容为:<%=getGBString(rs.getString(1))%>
<br>
<!--rs.getString("xxxx").getBytes("ISO8859_1"), "gb2312");-->

您的第二个字段内容为:<%=getGBString(rs.getString(2))%> <br>
<%}%>
<%out.print("数据库连接成功,恭喜你!!!");%> <br>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>


调试的结果如下:

您的第一个字段内容为:0304251
您的第二个字段内容为:???
您的第一个字段内容为:0304252
您的第二个字段内容为:??
数据库连接成功,恭喜你!!!

在这里先谢谢了。

搜索更多相关主题的帖子: 数据库 jsp sql server 乱码 
2007-01-13 20:21
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
你的数据是什么编码的

可惜不是你,陪我到最后
2007-01-13 20:26
hanshengchua
Rank: 1
等 级:禁止访问
威 望:2
帖 子:174
专家分:0
注 册:2006-5-8
得分:0 
以下是引用liuhde在2007-1-13 20:21:49的发言:

我写的这段代码连接sql server出现了中文乱码问题,能不能给我点提示将问题解决啊。
我的代码如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%!
public static String getGBString(String src) {
try {
return new String(src.getBytes("ISO-8859-1"), "gb2312");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
}
%>

<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user="sa";
String password="sa";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement
(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{%>
您的第一个字段内容为:<%=getGBString(rs.getString(1))%>
<br>
<!--rs.getString("xxxx").getBytes("ISO8859_1"), "gb2312");-->

您的第二个字段内容为:<%=getGBString(rs.getString(2))%> <br>
<%}%>
<%out.print("数据库连接成功,恭喜你!!!");%> <br>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>


调试的结果如下:

您的第一个字段内容为:0304251
您的第二个字段内容为:???
您的第一个字段内容为:0304252
您的第二个字段内容为:??
数据库连接成功,恭喜你!!!

在这里先谢谢了。

楼主用new string(rs.getString(*).getBytes("iso8859_1"),"gb2312")应该没有出现错误吧!

楼主可以尝试把iso-8859-1改成iso8859_1试一下,理论上讲好像没有什么错误。。。自己也才疏学浅,试一下吧!

2007-01-13 22:41
liuhde
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-11-25
得分:0 
冰封,怎么看到我的数据是什么编码,给点提示。
谢谢了。

2007-01-15 13:05
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
你先试一下你楼上的方法

MSSQL 的编码默认是操作系统的编码

可惜不是你,陪我到最后
2007-01-15 13:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-115820-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.340009 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved