mysql使用的是5.0,字库选的gbk源代码如下:
<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gbk"%>
<%@ page import="com.ty.sql.*" %><%
request.setCharacterEncoding("gbk");
        String strId=(String)session.getAttribute("strId");
        String monitor = (String)request.getParameter("monitor");
        try{   
    monitor = new String(monitor.getBytes("gbk"),"ISO-8859-1");
           }
        catch(Exception   e){   
  }  
        String query = "update article set monitor="+monitor+" where id =" +strId;

try
{
DataProcess.ExeQuery(query);//dataprocess为executeQuery()方法
}
catch(Exception e)
{
e.printStackTrace();
}

解决方案 »

  1.   

    monitor = new String(monitor.getBytes("gbk"),"ISO-8859-1"); 编码弄反了,先使用ISO-8859-1打散,再使用GBK组装。
      

  2.   

    呵呵,晕。
    monitor   =   new   String(monitor.getBytes("ISO-8859-1"),"gbk");  
      

  3.   

    还是不行,都是报这样的错:
    java.sql.SQLException: Unknown column 'qq' in 'field list'
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2998)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1071)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1005)
    at com.ty.sql.DataProcess.ExeQuery(DataProcess.java:38)
    at org.apache.jsp._111_jsp._jspService(_111_jsp.java:71)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
    java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id =12' at line 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2998)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1071)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1005)
    at com.ty.sql.DataProcess.ExeQuery(DataProcess.java:38)
    at org.apache.jsp._111_jsp._jspService(_111_jsp.java:89)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
      

  4.   

    >>>>>>>java.sql.SQLException:   Unknown   column   'qq'   in   'field   list' 上面的qq两个字符是String   monitor   =   (String)request.getParameter("monitor"); 得到的值!
      

  5.   

    String   query   =   "update   article   set   monitor="+monitor+"   where   id   ="   +strId; 
    改成
    String query="update article set monitor="+monitor+" where id='"+strId+"'";
      

  6.   

    你看一下,你安装的时候 
    有没有选择GB2312
    如果没有话,
    重新装一次,选择GB2312 
      

  7.   

    6楼的方法也试了,也不行。报下面的错:
    java.sql.SQLException: Unknown column 'q' in 'field list'
    java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id =13' at line 1
    at java.lang.Thread.run(Unknown Source)mysql设置的字库是gbk,而且执行insert语句时就能插入汉字与英文,就是update的时候不行。
    感谢达人们帮我解决一下这个问题,卡了很多天了。
      

  8.   

    executeQuery()?????
    为什么不用execute()?
      

  9.   

    或是st.executeUpdate(query)
    executeQuery()是反回结果集吧?
      

  10.   

    怎么才能解决这个问题!!!!executeQuery()方法 为另外写的一个数据库操作的类方法:
    public static void ExeQuery(String SQL){
    Connection con = getConnection();//调用另外的连接数据库的类

    try
    {
    Statement stmt = con.createStatement();
    stmt.executeUpdate(SQL);
    stmt.close();
    con.close();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }

    }
      

  11.   

    你把sql在执行前log出来,看看语句有没有问题,例如空格什么的吧!要不就太怪意了!
      

  12.   

    我以前遇到过主要是mysql的问题,我认为在装mysql时最好先设置好字符集,设置的方法可以在Windows文件夹下加上my.ini文件或者用客户端来设置,这样可以保证至少数据库本身可以插入汉字,然后再调试程序。。
      

  13.   

    你把query给打出来看看你的QQ拼成什么样就知道哪错了
      

  14.   

    在程序里执行“insert ”语句的时候,中文便能正确的插入到数据库里面,但用update方法的时候就不行了,百思不得其解啊!!!
      

  15.   

    String query="update article set monitor='"+monitor+"' where id='"+strId+"'";
    如果你的strId是整型就不要那个单引号,但是monitor那里要