首先,已经写了个过滤器 HttpServletRequest hrequest=(HttpServletRequest)request;
            hrequest.setCharacterEncoding("UTF-8");
            HttpServletResponse hresponse=(HttpServletResponse)response;
            hresponse.setContentType("text/html; charset=UTF-8");////这句我看以前帖子都没有写,但是我只有在写了之后才能在使用 response.getWriter().println("乱码");不出现乱码
            filterChain.doFilter(hrequest, response);
每个jsp页面的charset 都是utf-8,
  我使用的是struts
  现在的情况是,我在input 页面 输入中文,然后在action.do里面打印出来的时候,出现的是乱码,
但是我在ActionForm (textFrom)里面一个属性 直接附值比喻说
public void  setContent(String content){
 //this.content=content;
  this.content="中文";}这样在action.do 里面 response.getWriter().println(textForm.getContent());
输出的 是 “中文” 两个字,而且插入数据库中也ok, 我从数据库中读取出来的中文也能正常显示,
现在的问题就是  从jsp页面里的表单 值 传到ActionForm 中,中文会变为乱码
我写个转化函数 ,就是那常见的trans函数
temp = str.getBytes("iso-8859-1");
            result = new String(temp);
在ActionForm 的setXXX里面都
调用 比喻说 this.content=XXX.trans(content);结果还是不行。
而且我在XXXaction.do里面  response.getWriter().println(XXX.trans(textForm.getContent));
还是乱码,郁闷 伊, 觉得把这个弄好了,一定把 中文乱码问题好好研究下

解决方案 »

  1.   

    页面里面加一个
    <META http-equiv=Content-Type content="text/html; charset=GBK">
    试试
      

  2.   

    我新建了个jsp页面 测试 还是一样
    ${textForm.title}<br />
    ${textForm.content}<br />
    <%
    TextForm tf=(TextForm)session.getAttribute("textForm");
    out.println(tf.getTitle()+"<br />");
    out.println(tf.getContent()+"<br />");
    out.println(ToolClass.trans(tf.getTitle())+"<br />");
    out.println(tf.getContent()+"<br />");
    %>
    这儿的中文ok
    最后的输出结果
    ----------------------------------
    &aelig; &#135;é&cent;&#152;
    这儿的中文ok
    &aelig; &#135;é&cent;&#152;
    这儿的中文ok
    鏍囬
    这儿的中文o
    乱码 -------------------------
    ////我在FormAction 里面的 setContent(String content) 是this.content="这儿的中文ok"
    从上面的输出可以看书 使用ToolClass.trans转换后,出现的乱码不一样了。
      

  3.   

    TO; mvmouse(mouse) ( ) 
    这个方法不行,我已经实验过。
      

  4.   

    &aelig; &#135;é&cent;&#152  我网页上输出的不是这样,似乎是csdn 上把我那  偏僻的乱码 替换掉了吧
      

  5.   

    看看这里: 
    http://www.blogjava.net/rickhunter/articles/33571.html
      

  6.   

    这些偶早都试过了哦
     不行
      如果不同struts 的ActionForm 我可以解决,现在问题是 要传值到ActionForm 中出
      

  7.   

    你把web.xml里面那个servlet改一下,自己写一个继承ActionServlet的类,先转码。
      

  8.   

    拜托说就说清楚些落
      明明偶说了已经用了过滤器
    你还说用filter  
      郁闷
      

  9.   

    我说“也可以吧”就是因为我没亲自试验过,公司有项目用的过滤器,只不过不是UTF-8,是GB2312,你上面程序我也看不出问题,如果你想放弃filter当我什么都没说过。
      

  10.   

    首先我初步判断,你的数据库采用的是中文字符集。如果这样,你在过滤器中就不要用"UTF-8",而用"GBK"等中文字符集,你将jsp页面上的"utf-8"也改成"GBK",你从表单submit数据后,在Action类的方法里,form里的数据已转换成中文字符。
        这样一切正常。
        如果你一定要在jsp页面上设置"utf-8",会是另一种情况,你说一声。
      

  11.   

    还是谢谢个各位
     我终于搞定了
      摸索在 在
    filter 添加了个东西
      HttpServletRequest hrequest=(HttpServletRequest)request;
                hrequest.setCharacterEncoding(this.encoding);
                HttpServletResponse hresponse=(HttpServletResponse)response;
                hresponse.setCharacterEncoding(this.encoding);///。。我设置为gbk
                filterChain.doFilter(hrequest, response);什么其他的 trans 函数 ,getbyte 函数都不需要用
        另外 在每个页面也是用的gbk
    数据库的 默认编码也是gbk
      

  12.   

    hresponse.setCharacterEncoding(this.encoding);///。。我设置为gbk
     使用这句是为了让输出时候不出现乱码
      

  13.   

    this.encoding来源于本地字符编码,这样,因为jsp页是gbk,hresponse.setCharacterEncoding(this.encoding)就可以不用。
      

  14.   

    但是我不加这个 
     在使用表达式时候 或者 out.println都会出现乱码
      request.setCharacterEncoding 只是设置 request的编码 方式
    而jsp 的<% page ContentType="text/html;charset=gbk"%>是设置当前页面的编码方式
    对 以流来输出的内容似乎没有影响
      

  15.   

    我说得是hresponse.setCharacterEncoding这名可不用.