我存在mysql数据库中的中文数据是好的,但是通过servlet动态打印到浏览器时就变成乱码了,是什么原因
我加了request.setCharacterEncoding("gbk");这句话,可是不行,这句话好像是只对post请求起作用是吧?
但是我把请求改成post也不行,不知道是怎么回事,有没有高人我感觉会不会是PrintWriter out = response.getWriter();这个输出流的问题呢?

解决方案 »

  1.   

    楼主加response.setContextType("text/html;charset=gbk");没?
      

  2.   

    对,加上这一句。request.setCharacterEncoding("gbk");是获取上一个请求里提交的数据的时候要做的,一般放在过滤器里,不一定是gbk,这个字符集要根据上一个页面的chartSet而定
      

  3.   

    在jsp页面上看看你是用什么设的编码
      

  4.   

    request.setCharacterEncoding("gbk");
    ?????
    response吧,而且必须在PrintWriter out = response.getWriter();这句前面
      

  5.   

    是response?确定?
    response.setContextType("text/html;charset=gbk");这句话我有加啊
      

  6.   

    最好是些个Filter   我之前也经常出现乱码问题 该加的语句都加了 最后是些过滤器  这样最保险
      

  7.   

    建议用过滤器
    并且同一编码utf-8
      

  8.   

    request.setCharacterEncoding("gbk"); 
    必须在PrintWriter out = response.getWriter();的前面
      

  9.   

    楼主还是用过滤器吧, 很多乱码问题都可以解决.java代码:
    package com.deng.library.EncodingFilter;import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;public class filter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding("GBK");
    response.setCharacterEncoding("GBK");
    chain.doFilter(request, response);
    } public void init(FilterConfig arg0) throws ServletException { }}
    web.xml
    <filter>
       <filter-name>encoding</filter-name>
       <filter-class>com.deng.library.EncodingFilter.filter</filter-class>
      </filter>
      <filter-mapping>
       <filter-name>encoding</filter-name>
       <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  10.   

    先用过滤器试试,如果不行的话。可以修改web服务器的编码
      

  11.   

    setCharacterEncoding是修改请求的编码格式,在请求内容出险乱码时,这个才会起作用吧?
    建议用以下方案处理:
    1、从mysql读出内容,打印到控制台上,看是否乱码,如果是,那就要做一个编码转换了。否则执行下一步。
    2、改变jsp页面的内容编码,比如改为gbk,gb2312。
      

  12.   

    可能mysql数据库请求编码问题,试试下面的连接
     DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname?characterEncoding=gbk","user","password");
      

  13.   

    如果实在不行的话就这样做
    String value = new String(request.getParameter("epiArtClaim").toString().getBytes("iso8859-1"),"GBK");如果这样转都不行的话,那我就没有办法了
      

  14.   

    给你个终级解决JSP页面乱码的问题!在JSP头部粘贴下就行了!
    <%@page pageEncoding="gbk" %>
    <%@page contentType="text/html;charset=gbk"%>
    <%request.setCharacterEncoding("gbk"); %>
      

  15.   

    String mess=new String(str.getBytes("ISO-8859-1"),"GBK"));
      这样也不行?
      

  16.   

    有时候 你用的服务器版本不一样也会出不同的情况。
    我的tomcat用GBK显示不出中文
    但改成UTF-8就行
    set方式如果你要正确显示字符的话
    需要改服务器的.XML文件里面做修改。
    暂时我只用过TOMCAT所以不好说,怎么改。 
      

  17.   

    get请求乱码问题:在service.xml里加入URIEncoding="utf-8"