我在表单提交时为中文,怎么到了mysql 中为"????",把mysql读出来也为"???" 代码好下<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="conn" scope="page" class="sqlconn.conn" /> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body><%String s=new String(request.getParameter("txt").getBytes("ISO8859_1")); 
out.println(s);//此处可以显示为中文
String sql;
sql="insert into a values('"+s+"')";
conn.executeUpdate(sql);
  
%>
<% String aa;
ResultSet rs=conn.executeQuery("select * from a");
while(rs.next())

  aa=new String(rs.getString("a").getBytes("ISO8859-1"),"gb2312");
  out.println(aa); //显示为???}
%>
</body>
</html>请大帮忙解决~~
写入数数据库为乱码,急

解决方案 »

  1.   

    如果在页面是中文,页面是没有问题的.
    一,检查数据库采用的是什么字符集
    二检查数据库中的表采用的是什么字符集
    三,最容易被忽视的数据库连接采用什么字符集:
    jdbc:mysql://192.168.0.1:3306/ljh?useUnicode=true&characterEncoding=UTF-8
    楼主检查这个三个地方.
    问题就能解决
      

  2.   

    mysql对中文的支持不是很好,显示乱码很正常
      

  3.   

    问题已经解决
    ljhyp_cn(香草山牧民):的第三条,非常感谢你
    不过我还有一个问题就是我想使用一台机子访问另一台机子的MYSQL数据库,却不行,不知道怎么回事。http://192.168.97.42:8080/index.jsp 这个能够看到TOMCAT 画面
    而我现在要使用这台机子的192.168.97.42 上的mysql数据库,我的ip为192.168.97.41我的javabean连接数据库如下:
    package sqlconn;
    import java.sql.*;
    public class conn {
       String sDBDriver="org.gjt.mm.mysql.Driver";
       String sConnStr="jdbc:mysql://192.168.97.42:3306/bbs?useUnicode=true&characterEncoding=UTF-8";
       String user="root";
               String password="jjs";
       Connection conn=null;
       ResultSet rs=null;
           public conn()
       {
       try{
     Class.forName(sDBDriver);

      }catch(ClassNotFoundException ce){
      System.out.println(ce.getMessage());
    }
        }
       
       public int executeUpdate(String sql) throws Exception
       {
                 int i;
         sql= new String(sql.getBytes("GBK"),"ISO8859_1");
         try
         {
                  i=1;
          conn= DriverManager.getConnection(sConnStr,user,password);
          Statement stmt=conn.createStatement();
          stmt.executeUpdate(sql);
          conn.close();
          stmt.close();
         }
         catch(SQLException ex)
         {
          System.out.println("更新数据操作失败!"+ex.getMessage());
                  i=0;
         }
                 return i;
       }
       
       public ResultSet executeQuery(String sql) throws Exception
       {
        rs = null;
        try
        {
         sql= new String(sql.getBytes("GBK"),"ISO8859_1");
         conn=DriverManager.getConnection(sConnStr,user,password);
         Statement stmt=conn.createStatement();
         rs=stmt.executeQuery(sql);
        // conn.close();
         //stmt.close();
        } 
        catch(SQLException ex)
        {
           System.out.println("执行查询出错!"+ex.getMessage());
            
            }
            
            return rs;
         }}
    ="jdbc:mysql://192.168.97.42:3306/bbs?useUnicode=true&characterEncoding=UTF-8";192.168.97.42上的数据库bbs 连接不上,不知道这是怎么回事
      

  4.   

    你要用个网络管理软件 能够登陆到远程数据库上的  mysql
    的有你找找
      

  5.   

    你的意思是在41上允许web应用,在42上运行数据库吗?
    另外,如果联不上你有什么错误提示吗?
    另外你要确定41和42之间能通过http通信
      

  6.   

    我是把数据库放在192.168.97.42这这台服务器上面
    我要通过192.168.97.41这台机子访问192.168.97.42这台服务器上面的MYSQL 数据库BBS
    这两台机子都装了mysql及jdbc错误信息如下:type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:207)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
    root cause java.lang.NullPointerException
    at org.apache.jsp._1_jsp._jspService(_1_jsp.java:61)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:162)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
      

  7.   

    从你代码上看 conn.close();
          stmt.close();
    这个是不妥的,至少顺序是stmt.close();conn.close();
    而从你给出的错误信息看,还是头回遇到.
    提示是得到空指针.说明conn==null
    要么conn= DriverManager.getConnection(sConnStr,user,password);
    这里出现了问题如:驱动非法,驱动过期,找不到相应驱动.或者用户名密码错误.
    如果这些你确定ok
    那么就检查,和42是否能连同192.168.97.42通过http
    如果你不能确定,你可以下子一个EMS MySQL Manager 3来试图连接那台服务器
    看否连接得上,如果是连接不少!
    那么有可能是42的3306端口关闭或者占用,要么mysql服务没有启动.
    要么防火墙阻隔.
    楼主:你要仔细看看没有个环节
      

  8.   

    我用EMS MySQL Manager 进行连接时
    用192.168.97.41(自已机子)进行注册时用ip 192.168.97.41这个不行,而用localhost 这个连接可以。
    用ip 192.168.97.42 提示被拒绝访问另外问一下怎样打开3306端口?
      

  9.   

    问题已经解决,原来是在安装时候,在输入root 用户密码时候要把下面的复选打上勾,使它允许外部访问~~~