那就不用(q.getBytes("ISO8859_1"),"GBK");
主要是字符集的问题
JAVA老毛病,和操作系统,数据库,JAVA平台都有关系的。

解决方案 »

  1.   

    向数据库中加入中文数据,
    q=new String(q.getBytes("ISO8859_1"),"ISO8859_1");拿出来用gb2312
      

  2.   

    要不试试如下:
    向数据库中加入中文数据,
    q=new String(q.getBytes("ISO_8859_1"),"ISO_8859_1"); 
    或者如下:
    q=new String(q.getBytes("cp 850"),"cp 850");
    请问用的是什么数据库 
      

  3.   

    <%!
       public String getStr(String str)
       {
       try
       {
       String temp_p=str;
       byte[] temp_t=temp_p.getBytes("ISO8859-1");
       String temp=new String(temp_t);
       return temp;
       }
       catch(Exception e)
       {
       }
       return "null";
       }
    %>
    用這個函數轉換一下即可

    update table_name set name=getStr("人生");
      

  4.   

    谢谢大家的回答,但是:
    我用了大家的方法,还是“?”。
    我是用sqlserver2000,在vaj3.5的测试环境下运行。连接数据库用jdbc_odbc。
    若不对sql语句进行任何处理,直接使用,则只要更新的数据中有中文,就不能执行。无中文就可以执行。