Tomcat 9欢迎文件编码错误



我有一个index.html文件:

<!doctype html>
<html lang="fr" class="no-js fontawesome-i2svg-active fontawesome-i2svg-complete">
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
<title>Annuaire Téléphonique</title>
...

和我将它部署到一个war中,由Tomcat 9.0.35提供服务。问题是,在浏览器中,重音是这样的:"Annuaire Téléphonique">

我发现Tomcat服务的内容类型为false:

  • curl -v http://127.0.0.1:10000/->的content - type: text/html; charset = iso - 8859 - 1

Tomcat配置的每个部分都配置为UTF-8。我的Linux bash定义LANG=UTF-8, Tomcat以-Dfile.encoding=UTF-8

启动我还发现,当询问表单index.html时,tomcat没有指定编码,这对我来说是完美的,因为index.html本身包含UTF-8的Content-Type元数据,浏览器正确显示口音

  • curl -v http://127.0.0.1:10000/index.html ->的content - type: text/html

问题是:

  • 为什么index.html作为欢迎文件(http://127.0.0.1:10000/)使用ISO-8859-1 ?
  • 如何作为UTF-8 ?(AddDefaultCharsetFilter UTF-8没有帮助)

谢谢你的帮助

当我公开一个Spring应用程序时,我找到了一个有效的解决方案,具有以下属性

spring.http.encoding.charset = utf - 8spring.http.encoding.force-response = true

这种行为对我来说还是很奇怪……

我也遇到了同样的问题:

直接访问url:

  • example.com/index.html(编码可以)
  • example.com/(编码错误)->text/html; charset = iso - 8859 - 1

我也在用spring-boot。

spring.http.encoding。charset=UTF-8不适合我。

这是我的解决方案:)

@Component
public class CustomFilter implements Filter
{
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
if (request instanceof HttpServletRequest)
{
String servletPath = ((HttpServletRequest) request).getServletPath();
if (servletPath.equals("/")) {
// do not let tomcat assign  text/html;charset=ISO-8859-1
response.setContentType("text/html; charset=UTF-8");
}
}
chain.doFilter(request, response);
}
}

相关内容

  • 没有找到相关文章

最新更新