0
在JSP
,我張貼utf-8
表單服務器,我捕捉到請求消息:設置字符編碼不會生效
文本"中文"
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>
濾波器代碼設定的濾波器我哈瓦設置
{
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()
不會影響孩子的節點? 我還是不明白其中的道理
控制器request.getParameter(「contract.descriptor」)十六進制代碼是E4B8AD E69687,但是對於我的動作類成員字符串描述符顯示十六進制代碼,不顯示中文文本 – linzhang
您如何測試它不起作用?請[創建一個最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve)。然後將代碼添加到您的問題。 –
你如何使用Struts? –