大家好,小弟在学习Struts2框架的时候发现一个问题。
就是我写一个Action类,如果里面有System.out.println("中文").
单独以Java Application的形式测试的话,在控制台能正确输出中文。
可是如果发布到tomcat,从浏览器调用的话,就会有控制台打印乱码。
我把myeclipse以及struts2里可以设置encoding的地方全部设置成的utf-8.
在网上找了很多涉及encoding的地方,不管是从页面到后台还是从后台到页面,还是文件本身,还是数据库(此处不涉及)全部设成了utf-8.可是还是打印乱码。哪位大大能指点下Struts2把System.out怎么了?还是说Web调用的时候跟单独调用这个类时System.out的输出机制不一样?

解决方案 »

  1.   


    不应该呀,你这样试试,将System.out.println("中文").改成System.out.println("\u4e2d\u6587").看看是否ok
      

  2.   

    中文要先编码,再解码的
    编码:encodeURI(encodeURI(str));
    解码:java.net.URLDecoder.decode(str,"UTF-8");
      

  3.   

    这样unicode编码后跟直接写成中文是一样的,单独测试都能正确输出:
    System.out.println(name + " \u4e2d\u6587拦截器的动作----" 
    输出:null 中文拦截器的动作----开始执行登录的时间为: Wed May 09 20:35:33 CST 2012
    如果是在Web上访问的话:
    ??????????? ??????----??????????: Wed May 09 20:34:50 CST 2012这到底是肿么了咧?
      

  4.   

    我是想了解当我用Struts2把它发布到Web上后,这个乱码的机制是什么?为什么直接输出不用编码,而且我也在各个地方设置了编码方法都是UTF-8.为什么还需要单独编解码?
      

  5.   


    你这个是控制台打出的,还是log打出来的?
      

  6.   

    补充下,这个System.out是在控制台输出,不是返回到页面上。
      

  7.   

    你这样倒提醒了我,这个是Log打出来的话,哪里设置的把System.out打印到Log?哪里可以设置这个编码不会乱码呢?谢谢啊~
      

  8.   

    你按照如下解决方式试试:1、在Eclipse中,依次打开Run --->> Run Configration --->> Apache Tomcat--->> Arguments--->> VM arguments中添加-Dfile.encoding=UTF-8。
    2、在Eclipse中,依次打开Run --->> Run Configration --->> Apache Tomcat--->> Common--->> Console encoding中,选择UTF-8。
    这样试试。
      

  9.   

    这个早就设了的,基本上出现需要设置编码的地方都设置成了utf-8.
      

  10.   

    这个貌似还没有使用log4j汗
      

  11.   


    对了,你确定你struts2配置文件中的编码设置为utf-8了吗?因为所有action的request等都会被这里的编码所设置,你的过滤器都不起作用的。
      

  12.   

    你应该漏了一个地方,tomcat服务器里面一个文件也需要改,
     打开<tomcat_home>\conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:URIEncoding="utf-8"。修改后的Connector设置为:<Connector port="8080" maxHttpHeaderSize="8192"  
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
                   enableLookups="false" redirectPort="8443" acceptCount="100"  
                   connectionTimeout="20000" disableUploadTimeout="true" <SPAN style="COLOR: #ff0000">URIEncoding="utf-8"</SPAN> />  
      

  13.   


    楼主可以试试,一般Get方式都可以在这改成UTF-8编码,曾经我也遇到过乱码问题 ,一般从源头一步步分析就可以解决 的!