****急,救急,Tomcat和Mysql中的中文乱码问题,哪位高手帮我解决?在线等待...****

zslearning 2004-07-05 03:27:07
我是jsp初学者。下面是我的一段代码:
<%@ page contentType="text/html; charset=GB2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=GB2312">
<title>学籍查询1</title>
</head>
<body>
<%
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url="jdbc:mysql://localhost/school/user=root&password=&useUnicode=true&characterEncoding=GB2312";

//连接Mysql
Connection conn=DriverManager.getConnection(url);
Statement stmt=conn.createStatement();
String query="select name from class";
ResultSet resultSet=stmt.executeQuery(query);
%>
<form name="form1" method="post" action="">
<p>请选择查询班级的名称:
<select name="select">
<%
while(resultSet.next())
{
String classname=resultSet.getString("name");//将Mysql中的数据添加到select中
out.print("<option>"+classname+"</option>");
}
%>
</select>
</p>
<p> <a href="../xjcxxz.htm">下一步 >>>> </a></p>
</form>
<p> </p>
<p>  </p>
</body>
</html>

运行后,出现两种乱码:

1、
<title>学籍查询1</title>
<p>请选择查询班级的名称:
等处的中文不能正常显示,是乱码。

2、
我将第一行:
<%@ page contentType="text/html; charset=GB2312" language="java" import="java.sql.*" errorPage="" %>
改为
<%@ page contentType="text/html; charset=" language="java" import="java.sql.*" errorPage="" %>
此时
<title>学籍查询1</title>
<p>请选择查询班级的名称:
等处的中文能正常显示,但是
out.print("<option>"+classname+"</option>");一行显示的是乱码。
真是急死我了。
请问高手如何解决?等待中。
...全文
216 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuxingyuan 2004-07-06
  • 打赏
  • 举报
回复
up
jiankou2001 2004-07-06
  • 打赏
  • 举报
回复
把url中的characterEncoding参数去掉:
"jdbc:mysql://localhost/school/user=root&password=&useUnicode=true"
在页面中设置charset为gb2312或GBK


public static String convertCNForDisplay(String s) {
if (s == null || s.length() == 0) {
return null;
}
byte[] buffer = new byte[s.length()];
for (int i = 0; i < s.length(); i++) {
buffer[i] = (byte) s.charAt(i);
}
return new String(buffer);
}
最好是用第一种的方法!!
真是的!!
aaadddzhoujie 2004-07-06
  • 打赏
  • 举报
回复
首先换成tomcat5,然后添加request.setCharacterEncoding("gb2312");应该就没有问题啦
我以前也是这个样子的,不过现在好了。
飞翔的大麦茬 2004-07-06
  • 打赏
  • 举报
回复
应该加上charset=GB2312"


建议楼主再看看浏览器的设置
浏览器的查看-编码
看看编码方式是不是简体中文
haichuang 2004-07-06
  • 打赏
  • 举报
回复
看一看TOMCAT 的配置,让其编译JSP的时候指定按照GB2312编译就可以了,程序没问题.
stonegump 2004-07-06
  • 打赏
  • 举报
回复
把url中的characterEncoding参数去掉:
"jdbc:mysql://localhost/school/user=root&password=&useUnicode=true"
在页面中设置charset为gb2312或GBK
freelarry 2004-07-06
  • 打赏
  • 举报
回复
url="jdbc:mysql://"+ip+"/"+sid+"?useUnicode=true&characterEncoding=gb2312";
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url,username,password);


String classname=resultSet.getString("name");

这样就可以了啊,首先页面上
<%@page contentType="text/html;charset=gb2312"%>
shareanway 2004-07-06
  • 打赏
  • 举报
回复
建议用javabean来封装数据库操作的东西。你这样写乱死了,懒得看。
zslearning 2004-07-05
  • 打赏
  • 举报
回复
大家请注意:
我的数据库连接中有一行是这样的:
"jdbc:mysql://localhost/school/user=root&password=&useUnicode=true&characterEncoding=GB2312";(我是按网上教程照抄的。)
---------------------
在jsp文件的第一行,如果不设置charset,就是像这样
<%@ page contentType="text/html; charset=" language="java" import="java.sql.*" errorPage="" %>,那么网页中的中文能正常显示,数据库的中文不能正常显示。

如果设置了charset,如下面这样
<%@ page contentType="text/html; charset=GB2312" language="java" import="java.sql.*" errorPage="" %>,那么情况与上面正好相反,网页中的中文能不正常显示,而数据库的中文能正常显示。

我总是不能让二者协调工作,都显示出中文。
xkak2 2004-07-05
  • 打赏
  • 举报
回复
数据库的字符串内容,不能直接用ResultSet的getString,
而要用getBytes,得到byte[],然后用String的String(byte[], String charset)构造一个String。比如:
byte[] data = rs.getBytes(1);
String s = new String(data, "GBK");
uncooldog 2004-07-05
  • 打赏
  • 举报
回复
你可以用System.out.println(classname);打印到控制台看是不是乱码,从你的描述中的确看不出是不是数据库的问题
xkak2 2004-07-05
  • 打赏
  • 举报
回复
这么简单的问题,这么多人搞不定,还要乱说,真无趣!
在页面上加上这句:
<%@ page pageEncoding="GB2312"%>
dugang106 2004-07-05
  • 打赏
  • 举报
回复
数据库中是乱码么?
如果不是,需要写个转换函数:
public static String convertCNForDisplay(String s) {
if (s == null || s.length() == 0) {
return null;
}
byte[] buffer = new byte[s.length()];
for (int i = 0; i < s.length(); i++) {
buffer[i] = (byte) s.charAt(i);
}
return new String(buffer);
}
bestdelphier 2004-07-05
  • 打赏
  • 举报
回复
换成tomcat5一般的html代码中的中文乱码问题就可以解决了。
其他的乱码就需要转码了,就是hq1305018(跃强)的方法,或者把gb2312换成GBK,它支持更多的中文字符。
galewithwing 2004-07-05
  • 打赏
  • 举报
回复
试着用gbk代替gb2312看看;
也可以request.setCharacterEncoding("gb2312");//或者gbk
hooligan000112003 2004-07-05
  • 打赏
  • 举报
回复
我也碰到这种问题,连接数据库中文不能显示,都是问号,不知怎么解决
关注!
zslearning 2004-07-05
  • 打赏
  • 举报
回复
不行呀,classname还是乱码。
hq1305018 2004-07-05
  • 打赏
  • 举报
回复
String classname=resultSet.getString("name");//此句下面加一句
classname=new String(classname.getBytes("ISO-8859-1"),"GB2312");
//试试。

zslearning 2004-07-05
  • 打赏
  • 举报
回复
我用的是Tomcat4.1和mysql3.23.53。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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