在action里,我String tmp = "<?xml version='1.0' encoding='UTF-8'?><chart "caption='标题'></chart>" ;
然后我在浏览器的地址栏输入这个action.
得到的是一份中文为'?'的XML.为什么呢?
我在web.xml有设置: <filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

解决方案 »

  1.   

    这个问题不是你的浏览器和设置的问题,url地址栏中如果有中文的话是不认的,必须对中文进行编码。
    javascirpt中有escape('中文'). java中有java.net.URLEncoder.encode这个方法进行编码。
      

  2.   


    我的action大概是这样:public class MyAction extends BaseAction
    {
         public String test()
         {
              String tmp = " <?xml version='1.0' encoding='UTF-8'?> <chart "caption='标题'> </chart>" ;
              return "strings";
         }
    }
    所以我的URL大概是这样:http://localhost:8080/myapp/myAction!test.action
    这个action将返回我的String tmp 到前台.
    其中的中文就"???"了...
      

  3.   

    你的页面上面也改成utf-8了吗
      

  4.   


    页面..都是UTF-8...不过.我是直接在地址栏上访问action啊.在class类中定义的中文,
    经过struts传出来,就变成??了.
      

  5.   

    你的web.xml中 没有配置action啊
      

  6.   

    在struts.xml设置字符类型 然后把tomcat的字符类型也设置了 就木有问题了。。
      

  7.   

    将你接收的字符串用String对编码处理一下就好了。
      

  8.   

    HttpServletRequest request=ServletActionContext.getRequest();
    String str=new String(request.getParameter("subName").getBytes("ISO-8859-1"),"GB2312");