连接数据库时从表单中得到的 不能为汉字 连接数据库时用getParameter从表单中得到的值不能为汉字,英文可以.用中文时在数据库中存储的是 “????”而不是汉字.我的配置是 windows xp,jdk1.5,apache-tomcat-1.4.3希望各位帮我解决。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 连接数据库时参照DriverManager.getConnection("jdbc:mysql://localhost:3306/book?user=root&password=123456&useUnicode=true&characterEncoding=gb2312");来连页面中加上<% response.setCharacterEncoding("gb2312");%> 给JSP原码,可能在需要转码的时候需要用到convert(**.get(**))这样转换 在User.getName(new String(rs.getString("name").getByte("latin1"),"GBK"))中着样改,这样的话,你从数据库中取出的数据就已经转码了,那么你在页面就可以直接User.getParameter("name"),就不会出现?????了,这里注意latin1要看你的数据库的编码方式来定。 应该加一个字符过滤类,这是JDBC的问题.在向数据库传的时候调用一下这个过滤类就可以了. 我以前的网站在我机器上实在正常的,到了服务器那里就乱码了?不过写到服务器上就错误了?是JSP+MYSQL?是不是写到数据库的时间也要转化? JSP用<% page ... charset=gbk"> 楼主我也有一个问题。我用的是jdk1.4和tomcat5.0和ms-sql 2000连不上数据库是怎么回事?我已经贴了很多次了。没人回答。你的数据库能连上,我相信你能解决这个问题了。我的系统是 win2000 Server版;Tomcat5.0 装在E盘的跟目录下,j2sdk1.4.2_07装在E盘跟目录下;环境变量如下:CATALINA_BASE E:\Tomcat 5.0;CATALINA_HOME E:\Tomcat 5.0;classpath .;E:\j2sdk1.4.2_07\lib\dt.jar;E:\j2sdk1.4.2_07\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;E:\Tomcat 5.0\common\lib\tools.jar;Path C:\Program Files\Java\j2re1.4.2_07\bin;E:\j2sdk1.4.2_07\jre\bin;E:\j2sdk1.4.2_07\bin;问题如下:原代码如下:<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><body><%try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){ out.print(e);}try{ String url = "jdbc:odbc:jcc";//数据源名称为jcc Connection conn = DriverManager.getConnection(url); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM Mytable"); out.println("User-list"+"<br>"); while(rs.next()){ out.print(rs.getString(1)+" "); out.print(rs.getString(2)+"<br>"); } rs.close(); stmt.close(); conn.close();}catch(Exception ex){ out.print(ex);}%></body></html>结果如下:java.sql.SQLException: [Microsoft][ODBC 驱动程序 管理器] 未发现数据源名称并且未指定默认驱动程序 同样的代码同样的数据源和同样的数据库在java中能读出和写如数据库!!!!!!!!!问题2如下:原代码如下:<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><body><h1>Jdbc 连接到 Access 数据库的例子</h1><%java.sql.Connection sqlCon; //数据库连接对象java.sql.Statement sqlStmt; //SQL语句对象java.sql.ResultSet sqlRst; //结果集对象java.lang.String strCon; //数据库连接字符串java.lang.String strSQL; //SQL语句String mdbpath=request.getRealPath("/");//装载JDBC-ODBC驱动程序Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //设置数据库连接字符串strCon = "jdbc:odbc:driver={SQL Server};DBQ="+mdbpath+"Mydb.mdb";out.println(strCon);//strCon = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=F:\\Jb\\BeanServletTest\\defaultroot\\dbtest.mdb";//"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+ mdbpath+"\\dbtest.mdb";//数据库是一个Access文件,里面有一张表user,表里有userid和userpass两个字段sqlCon = java.sql.DriverManager.getConnection(strCon);//创建SQL语句对象sqlStmt = sqlCon.createStatement();//执行插入几条记录的SQL语句strSQL = "insert into Mytable (userid,userpass) values(\'user111\',\'pass111\')";out.println(strSQL);out.println("插入操作的返回值是"+sqlStmt.executeUpdate(strSQL));//获取记录总数strSQL = "select * from user where userid=\'"+request.getParameter("userid")+"\' and userpass=\'"+request.getParameter("userpass")+"\'" ;//判断条件是 where userid="+request.getParameter("userid")+" and userpass="+request.getParameter("userpass") ;//一些数据库里的查询的判断条件out.println(strSQL);strSQL = "select * from Mytable";out.println(strSQL);sqlRst = sqlStmt.executeQuery(strSQL);//打印测试if( sqlRst != null ){out.println("一共有"+sqlRst.getRow()+"条记录");while( sqlRst.next() ){out.println("你的用户名字是:\t" + sqlRst.getString("userid")+"<br>");out.println("你的密码是:\t" + sqlRst.getString("userpass")+"<br>");out.println("一共有"+sqlRst.getRow()+"条记录<br>");}out.println("一共有"+sqlRst.getRow()+"条记录");}sqlRst.close();sqlCon.close();%></body></html>远行结果如下:HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][ODBC SQL Server Driver]没有提供任何 DSN 或 服务器关键字 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758) org.apache.jsp._2_jsp._jspService(_2_jsp.java:104) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root cause java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有提供任何 DSN 或 服务器关键字 sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source) sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source) sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) java.sql.DriverManager.getConnection(Unknown Source) java.sql.DriverManager.getConnection(Unknown Source) org.apache.jsp._2_jsp._jspService(_2_jsp.java:68) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.--------------------------------------------------------------------------------Apache Tomcat/5.0.28可是我已经建了数据库呀!(这个代码好象不需要数据源吧!!) String mdbpath=request.getRealPath("/");//装载JDBC-ODBC驱动程序Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //设置数据库连接字符串这不是明摆着在用odbc么,还说不需要数据源?别忘了建成系统数据源! 至于楼主this.age= toChinese(age);加个函数来转换public static String toChinese(String input) {try {byte[] bytes = input.getBytes("ISO8859-1");return new String(bytes);}catch (Exception ex) {}return null;} 什么是系统数据源?怎么建?是不是dsn那个呀!那个已经建了!!!!!! 在控制面版里面设ODBC数据源~ 其中还有选驱动 所选驱动就要看你具体用哪个数据库了,我连的是access 对了,问题解决了 我在JSP代码中加了一句 str=new String(str.getBytes("ISO8859-1"),"gb2312"); 多谢上面的兄弟给我的答复 AJAX里生僻字显示乱码,不是JSP 求助,关于集群环境的static变量的问题 间接显示图片怎么出错? 关于javamail的一个小程序,写邮件客户端,一直出不来结果,帮忙改错 LoadRunner 测试并发用户数事物的问题 关于在上下文中取值问题 jsp 如果取代理地址的真实客户机IP。 大家帮我看看这个问题阿! 怎样将一个字符串类型的参数从一个JSP页面传递到另一个JSP页面? 初学者初级问题,请指教! 如何修改WEB.XML文件? JSP环境配置问题!
页面中加上<% response.setCharacterEncoding("gb2312");%>
<% page ... charset=gbk">
我也有一个问题。
我用的是jdk1.4和tomcat5.0和ms-sql 2000
连不上数据库是怎么回事?
我已经贴了很多次了。没人回答。你的数据库能连上,我相信你能解决这个问题了。
我的系统是 win2000 Server版;
Tomcat5.0 装在E盘的跟目录下,j2sdk1.4.2_07装在E盘跟目录下;
环境变量如下:
CATALINA_BASE E:\Tomcat 5.0;
CATALINA_HOME E:\Tomcat 5.0;
classpath .;E:\j2sdk1.4.2_07\lib\dt.jar;E:\j2sdk1.4.2_07\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;E:\Tomcat 5.0\common\lib\tools.jar;
Path C:\Program Files\Java\j2re1.4.2_07\bin;E:\j2sdk1.4.2_07\jre\bin;E:\j2sdk1.4.2_07\bin;
问题如下:原代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
<%
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
out.print(e);
}
try{
String url = "jdbc:odbc:jcc";//数据源名称为jcc
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Mytable");
out.println("User-list"+"<br>");
while(rs.next()){
out.print(rs.getString(1)+" ");
out.print(rs.getString(2)+"<br>");
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception ex){
out.print(ex);
}
%></body>
</html>结果如下:
java.sql.SQLException: [Microsoft][ODBC 驱动程序 管理器] 未发现数据源名称并且未指定默认驱动程序
同样的代码同样的数据源和同样的数据库在java中能读出和写如数据库!!!!!!!!!
问题2如下:
原代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
<h1>
Jdbc 连接到 Access 数据库的例子</h1>
<%
java.sql.Connection sqlCon; //数据库连接对象
java.sql.Statement sqlStmt; //SQL语句对象
java.sql.ResultSet sqlRst; //结果集对象
java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句
String mdbpath=request.getRealPath("/");
//装载JDBC-ODBC驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //设置数据库连接字符串
strCon = "jdbc:odbc:driver={SQL Server};DBQ="+mdbpath+"Mydb.mdb";
out.println(strCon);
//strCon = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=F:\\Jb\\BeanServletTest\\defaultroot\\dbtest.mdb";
//"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+ mdbpath+"\\dbtest.mdb";
//数据库是一个Access文件,里面有一张表user,表里有userid和userpass两个字段
sqlCon = java.sql.DriverManager.getConnection(strCon);
//创建SQL语句对象
sqlStmt = sqlCon.createStatement();
//执行插入几条记录的SQL语句
strSQL = "insert into Mytable (userid,userpass) values(\'user111\',\'pass111\')";
out.println(strSQL);
out.println("插入操作的返回值是"+sqlStmt.executeUpdate(strSQL));
//获取记录总数
strSQL = "select * from user where userid=\'"+request.getParameter("userid")+"\' and userpass=\'"+request.getParameter("userpass")+"\'" ;
//判断条件是 where userid="+request.getParameter("userid")+" and userpass="+request.getParameter("userpass") ;
//一些数据库里的查询的判断条件
out.println(strSQL);
strSQL = "select * from Mytable";
out.println(strSQL);
sqlRst = sqlStmt.executeQuery(strSQL);
//打印测试
if( sqlRst != null ){
out.println("一共有"+sqlRst.getRow()+"条记录");
while( sqlRst.next() ){
out.println("你的用户名字是:\t" + sqlRst.getString("userid")+"<br>");
out.println("你的密码是:\t" + sqlRst.getString("userpass")+"<br>");
out.println("一共有"+sqlRst.getRow()+"条记录<br>");
}
out.println("一共有"+sqlRst.getRow()+"条记录");
}
sqlRst.close();
sqlCon.close();
%>
</body>
</html>
远行结果如下:
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][ODBC SQL Server Driver]没有提供任何 DSN 或 服务器关键字
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp._2_jsp._jspService(_2_jsp.java:104)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有提供任何 DSN 或 服务器关键字
sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
org.apache.jsp._2_jsp._jspService(_2_jsp.java:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------Apache Tomcat/5.0.28
可是我已经建了数据库呀!(这个代码好象不需要数据源吧!!)
//装载JDBC-ODBC驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //设置数据库连接字符串
这不是明摆着在用odbc么,还说不需要数据源?别忘了建成系统数据源!
this.age= toChinese(age);
加个函数来转换
public static String toChinese(String input) {
try {
byte[] bytes = input.getBytes("ISO8859-1");
return new String(bytes);
}
catch (Exception ex) {
}
return null;
}
怎么建?
是不是dsn那个呀!
那个已经建了!!!!!!
其中还有选驱动
所选驱动就要看你具体用哪个数据库了,我连的是access
我在JSP代码中加了一句 str=new String(str.getBytes("ISO8859-1"),"gb2312");
多谢上面的兄弟给我的答复