无法更改charset编码

时间:2017-08-07 10:04:27

标签: java angular tomcat spring-boot

我目前有一个带有Spring Boot后端的Angular 4应用程序,它们都在tomcat 9服务器上提供。

无论我尝试什么,当我转到我的应用程序URL时,服务的html文件的内容类型都用ISO-8859-1编码(我想要UTF-8)。

我已经尽可能地添加了utf-8,从html文件到服务器配置,但它没有解决问题(从后端返回的数据是用utf-8编码的,但不是html文件)。

这是我当前的堆栈:

  • Angular 4
  • Spring Boot
  • Tomcat 9
  • Chrome 59 / Firefox 54

在tomcat中:

<filter>
    <filter-name>setCharacterEncodingFilter</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <async-supported>true</async-supported>
</filter>

在我拥有的所有连接器中添加了URIEncoding="UTF-8" useBodyEncodingForURI="true"

春天:

在请求标头中添加了带有utf-8字符集的内容类型。

在HTML中:

添加了元:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

如果我忘记了一些信息,请随时问我。

感谢。

1 个答案:

答案 0 :(得分:1)

实际上我设法通过弹簧的一个来改变web.xml中tomcat的默认过滤器来实现它的工作:

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.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>

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>