运行环境:window 2000 server+tomcat5.08+mysql4.1+j2sdk1.4.1_07写入数据库的中文字符在数据库里显示为乱码,读出来也是乱码,
而我直接在数据库里输入中文字符,不会出现乱码,显示也正确。
请问是什么原因? 该怎么解决?

解决方案 »

  1.   

    mysql数据库是有这问题
    读出来以后用String str=new String(str.getBytes("iso8859-1"))转一下就可以了
      

  2.   

    在Servlet中书写以下代码:
      request.setContext....;
      response.set...("GBK");
    呵呵,我用的是JBUILDER2006,后面的内容打点后有提示,现在忘记了!见谅
      

  3.   

    <%@ page contentType="text/html; charset=gb2312"%>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">我用的这个不用转 就可以显示 是不是巧合?
      

  4.   

    可以说是巧合,最好按照我上边的方法进行处理,不然会有问题,我在Struts中继承Struts的Servlet,就是要解决这个乱吗问题
      

  5.   

    可以在得到参数之后对中文字符串进行转换.不过最好的方法是在请求提交之前加一个过滤器,对编码进行过滤,具体做法应该比较简单,写二个小类就可以实现了,然后在web.xml中配置一个过滤器,让请求提交之前对编码进行转换.
      

  6.   

    <%@ page contentType="text/html; charset=gb2312"%>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    好像加这个就可以实现了
      

  7.   

    首先你要确定自己数据库所采用的编码方式假设为(iso8859-1)与你写入前的字符所采取的编码方式假设为(GBK)。
    往数据库中写入数据时,应该以
    String str=new String(str.getBytes("GBK"),"iso8859-1");
    而在你从DB中取出来的时候,则取反就OK了!
      

  8.   

    主要是数据的编码格式问题,mysql默认的编码方式是latin。你只要把它的编码方式设定成跟页面的一样就可以了。