设置字符编码不会生效

时间:2017-05-27 06:17:52

标签: java utf-8

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

enter image description here

enter image description here

文字"中文" 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>

过滤代码我hava set

{
    if(this.ignore || request.getCharacterEncoding() == null) {
        String encoding = this.selectEncoding(request);
        if(encoding != null) {
            request.setCharacterEncoding(encoding);
            response.setCharacterEncoding(encoding);
        }
    }

    chain.doFilter(request, response);
}

调试信息编码是utf-8我设置了Tomcat配置文件conf / server.xml

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

IDEA tomcat设置VM选项:

 -server -XX:PermSize=128M -XX:MaxPermSize=512M

我的开发工具是IDEA,平台是Windows,它不起作用。任何人都可以帮助我!!

我修改了我的代码:

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:中文

dost HttpServletRequest#setCharacterEncoding()不影响子节点? 我还是不明白原因

1 个答案:

答案 0 :(得分:0)

原因是我的过滤器

<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>

是在我的XSSFilter之后。

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