在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>
过滤代码我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()
不影响子节点?
我还是不明白原因
答案 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调整为第一个过滤器,它工作正常!