我在插入数据库之前对中文的字段进行了编码转换,即 
String answerof25=new String(request.getParameter("problem25").getBytes("ISO8859-1"),"GB2312");然后out.print(answerof25);打出来的中文是正常的.但是插入成功后,再看,数据库中中文字段显示???是怎么回事呢?请高手指教!

解决方案 »

  1.   

    试试重新配置mysql??
    默认mysql使用的是latin1字符集,改成gbk
    在mysql的config wizard里改
    版本5.0
      

  2.   

    String answerof25=new String(request.getParameter("problem25").getBytes("ISO8859-1"),"GB2312"); 可以不用这么写:request.setCharacterEncoding("gbk");
    String answerof25 = request.getParameter("problem25");如果还得服务端响应到页面上的话,还得加上response.setCharacterEncoding("gbk");或者建一个过滤器把 request 和 response 的编码改为 GBK,就用不着每个里面都去写了。至于存数据库:1,首先你得确保数据表采用的编码是 GBK
    2,在 MySQL JDBC 的连接字符串后面加上 ?useUnicode=true&characterset=gbk如果你新建数据库默认的编码是 Latin-1 字符集的话,你可以更改默认的编码:1,打开 MySQL 的安装目录,打开 my.ini 文件
    2,找到 [mysqld] 组,修改数据库服务器配置
    3,找到 default-character-set 这个,把值改为 gbk,如果没有的话就加一行 default-character-set=gbk这样处理后,重启 MySQL 服务,以后新建的数据库默认都是 GBK 编码了,否则得在建库、
    建表时指定编码,会很麻烦的。前面说到的在连接字符串后面加上 ?useUnicode=true&characterset=gbk 这个,也可以改 my.ini
    实现的,就是改 [mysql] 组,加上 default-character-set=gbk 这句,不过不建议这样做,建议在
    程序中控制,因为在程序中控制的话可以在任何一个 MySQL 上面使用。
      

  3.   

    问题已经解决了!
    1.连接数据库时的url中&characterEncoding=gb2312去掉,不用设置,使其使用默认编码格式;
    2.将数据库中要插入中文的字段类型修改为binary
    3.在从页面表单中取出的数据要插入到数据库中时,不要作任何编码转换,直接request.getParameter("参数名");这样就行.
    4.而在你的jsp页面中   
      <%@   page   contentType="text/html;charset=gb2312"   %>这样写,   
      你所从数据库中取出的字段(有中文的),都用   
      new   String("rs.getString("字段").getBytes("iso8859-1"),"gb2312");这样得到的在页面中显示的就是中文谢谢大家勇跃参加!