2017-05-27 56 views
0

JSP,我張貼utf-8表單服務器,我捕捉到請求消息:設置字符編碼不會生效

enter image description here

enter image description here

文本"中文"utf-8代碼E4B8ADE69687

所以我相信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> 

濾波器代碼設定的濾波器我哈瓦設置

{ 
    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 I設置的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,它的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()不會影響孩子的節點? 我還是不明白其中的道理

+0

控制器request.getParameter(「contract.descriptor」)十六進制代碼是E4B8AD E69687,但是對於我的動作類成員字符串描述符顯示十六進制代碼,不顯示中文文本 – linzhang

+0

您如何測試它不起作用?請[創建一個最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve)。然後將代碼添加到您的問題。 –

+0

你如何使用Struts? –

回答

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到第一個過濾器,它工作正常!

相關問題