下面的代码我怎么做也不能正常显示,不知道是怎么回来,把设charset置成GB2312数据库中读的数据能正常显示但页的其它数据显示不正常,我把charset设置成GB18030页面是正常了,数据库中数据又不正常,我快气的不行了,各位大哥帮帮我吧<%@ page language="java" import="java.sql.*" %>
<%@ page contentType="text/html; charset=gbk" %>
<% request.setCharacterEncoding("gbk"); %>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con=DriverManager.getConnection("jdbc:odbc:zhou","","");
ResultSet rs =null;
String str="select * from sj";
Statement stmt=con.createStatement();
rs=stmt.executeQuery(str);
StringBuffer sb=new StringBuffer();
while(rs.next())
{
sb.append(rs.getString(1));
}
if(con!=null)
{
con.close();
}
%>
<html><head></head><body>
<p>zhou口若悬河</p>
<%=sb %>
</body></html>
<%@ page contentType="text/html; charset=gbk" %>
<% request.setCharacterEncoding("gbk"); %>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con=DriverManager.getConnection("jdbc:odbc:zhou","","");
ResultSet rs =null;
String str="select * from sj";
Statement stmt=con.createStatement();
rs=stmt.executeQuery(str);
StringBuffer sb=new StringBuffer();
while(rs.next())
{
sb.append(rs.getString(1));
}
if(con!=null)
{
con.close();
}
%>
<html><head></head><body>
<p>zhou口若悬河</p>
<%=sb %>
</body></html>
我把String str;
可是不行提示,如下类型错误
An error occurred at line: 5 in the jsp file: /be.jsp
Generated servlet error:
Type mismatch: cannot convert from byte[] to String
<%@ page contentType="text/html; charset=gbk" %>
<%!
public String GetChString(String str) {
try {
String tempstring=str;
byte[] tempstr=tempstring.getBytes("ISO8859-1");
String temp=new String(tempstr);
return temp;
}
catch(Exception e) {
}
return "null";
}
%>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con=DriverManager.getConnection("jdbc:odbc:zhou","","");
ResultSet rs =null;
String str="select * from sj";
Statement stmt=con.createStatement();
rs=stmt.executeQuery(str);
StringBuffer sb=new StringBuffer();
while(rs.next())
{
sb.append(GetChString(rs.getString(1)));
}
if(con!=null)
{
con.close();
}
%>
<html><head></head><body>
<p>zhou口若悬河</p>
<%=sb %>
</body>
</html>
String line="";//我加的
while(rs.next())
{
line=new String(rs.getString(1).getBytes("ISO8859_1"));//我加的
sb.append(line);
}
sb=sb.toString();//我加的
我在你原代码上加的,你看看
注意:虽然浏览器浏览乱码,但一些文本编辑器却能正确显示jsp文件中的中文,为什么?因为这些文本编辑器不以charset设置来判断jsp文件使用的字符集,而是采用智能的方式识别出jsp文件所用字符集,因此能正确显示jsp页面中的字符,而浏览器以charset设置中的错误字符集来显示页面,所以乱码。
response.setCharacterEncoding("GBK");
改为:
byte[] tempstr=tempstring.getBytes("gb2312"); 就OK了
<% request.setCharacterEncoding("gb2312"); %>
我发现了一个问题如"中"字,在GB2312中的编码是"D6D0 ",到.JAVA文件就成了"E4B8" 到.CLASS中就成了"E6B6" 反正是进行了二次GB2312转UTF-8不知是怎么回事
tempstring 为数据库取出字符串,s为jsp中可以真确显示的值
<%@ page contentType="text/html;charset=gb2312" %><%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con=DriverManager.getConnection("jdbc:odbc:grade","","");
ResultSet rs =null;
String str="select * from grade";
Statement stmt=con.createStatement();
rs=stmt.executeQuery(str);
StringBuffer sb=new StringBuffer(); while(rs.next())
{
sb.append(rs.getString(1));
}
if(con!=null)
{
con.close();
}
%>
<html><head></head><body>
<p>zhou口若悬河</p>
<%=sb %>
</body></html>
把<%@ page contentType="text/html; charset=gbk" %>改为
<%@ page contentType="text/html;charset=gb2312" %>;
然后把<% request.setCharacterEncoding("gbk"); %> 去掉就可以了我在我的机子上这样做就可以,不知道你的机子怎么样?
http://kb.csdn.net/java/Articles/200511/82489e2c-5ff8-4bfe-91ee-4343162c489e.html