Java 设置字符编码不需要';不生效

Java 设置字符编码不需要';不生效,java,utf-8,Java,Utf 8,在JSP中,我将utf-8表单发布到服务器,我捕获了post消息: 文本“中文"utf-8代码为E4B8ADE69687 因此我确信JSP代码是utf-8 在Java中,我在web.xml <filter> <description>desc-CharacterEncodingFilter</description> <filter-name>CharacterEncodingFilter</filter-name>

JSP
中,我将
utf-8
表单发布到服务器,我捕获了post消息:

文本<代码>“中文"
utf-8
代码为
E4B8AD
E69687

因此我确信
JSP
代码是
utf-8
在Java中,我在
web.xml

<filter>
    <description>desc-CharacterEncodingFilter</description>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>com.linkage.rainbow.ui.filter.SetCharacterEncodingFilter</filter-class>
     <init-param>
         <param-name>encoding</param-name>
         <param-value>UTF-8</param-value>
     </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern></filter-mapping>
调试信息编码是utf-8,我设置了Tomcat配置文件conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>
我的开发工具是IDEA,平台是Windows,bug它不起作用。有人能帮我吗

我修改我的代码:

String test = new String(contract.getDescriptor().getBytes("iso-8859-1"),"UTF-8");
它起作用了!! 我的表格数据是:

contract.name:pro-i_srv_synch_chain_chl
contract.contractId:100000372
contract.code:pro-i_srv_synch_chain_chl
contract.isBase:0
contract.baseContractId:
contract.descriptor:中文
HttpServletRequest#setCharacterEncoding()是否不影响子节点?
我仍然不明白原因

原因是我的过滤器

<filter>
    <description>desc-CharacterEncodingFilter</description>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>com.linkage.rainbow.ui.filter.SetCharacterEncodingFilter</filter-class>
     <init-param>
         <param-name>encoding</param-name>
         <param-value>UTF-8</param-value>
     </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern></filter-mapping>

描述字符编码过滤器
字符编码滤波器
com.linkage.rainbow.ui.filter.SetCharacterEncodingFilter
编码
UTF-8
字符编码滤波器
/*
在我的XSSFilter后面


因此,我将CharacterEncodingFilter调整为第一个过滤器,它工作正常!

controller request.getParameter(“contract.descriptor”)十六进制代码是E4B8AD E69687,但对于我的action类成员字符串描述符显示十六进制代码,不显示中文文本如何测试它不起作用?请。然后将代码添加到您的问题中。如何使用Struts?
contract.name:pro-i_srv_synch_chain_chl
contract.contractId:100000372
contract.code:pro-i_srv_synch_chain_chl
contract.isBase:0
contract.baseContractId:
contract.descriptor:中文
<filter>
    <description>desc-CharacterEncodingFilter</description>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>com.linkage.rainbow.ui.filter.SetCharacterEncodingFilter</filter-class>
     <init-param>
         <param-name>encoding</param-name>
         <param-value>UTF-8</param-value>
     </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern></filter-mapping>