Sam*_*mir 7 encoding servlets utf-8 wildfly
我曾经在GlassFish服务器上运行我的JavaEE应用程序,并且编码类型(UTF-8)没有问题,因为我在服务器的JVM设置中添加了以下属性:
file.encoding = UTF-8
Run Code Online (Sandbox Code Playgroud)
现在,我正在使用WildFly服务器,我已经完成了所谓的配置,将编码类型设置为UTF-8,但字符仍然出现错误的编码,不仅在网页上,而且在使用Eclipse调试应用程序时,使用(Web servlet请求)加载的响应数据不是UTF-8编码的.以下是我在WildFly上所做的:
use*_*037 19
Wildfly现在使用Undertow,因此请检查配置文件中的子系统:
<subsystem xmlns="urn:jboss:domain:undertow:3.0">
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" url-charset="UTF-8" />
</server>
<servlet-container default-encoding="UTF-8" name="default">
<jsp-config />
<websockets />
</servlet-container>
</subsystem>
Run Code Online (Sandbox Code Playgroud)
使用url-charset和default-encoding设置不需要过滤器.
cod*_*ent -4
使用CharacterEncodingFilter(就像这个,取自Spring)强制UTF-8作为所有请求和响应的编码:
public class CharacterEncodingFilter implements Filter {
private String encoding;
private boolean forceEncoding;
@Override
public final void init(FilterConfig filterConfig) throws ServletException {
String encod = filterConfig.getInitParameter("encoding");
if(encod !=null){
encoding = encod ;
}
String forceEncod = filterConfig.getInitParameter("forceEncoding");
if(forceEncod !=null){
forceEncoding = forceEncod ;
}
}
public final void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws ServletException, IOException {
if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
request.setCharacterEncoding(this.encoding);
if (this.forceEncoding) {
response.setCharacterEncoding(this.encoding);
}
}
filterChain.doFilter(request, response);
}
}
Run Code Online (Sandbox Code Playgroud)
网络.xml
<!-- Enforce UTF-8 Character Encoding -->
<filter>
<filter-name>charEncodingFilter</filter-name>
<filter-class>somepackages.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9428 次 |
| 最近记录: |