java - 无法更改字符集编码

标签 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 启动
  • 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"在我所有的连接器中。

Spring :

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

在 HTML 中:

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

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

谢谢。

最佳答案

实际上,我设法通过在 spring 的 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>

关于java - 无法更改字符集编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45544310/

相关文章:

java - 得到相同的随机数

java - 避免在 Spring 中为 TImeline 功能创建重复项

libraries - ReSTLet 框架 - 编辑 agent.properties 文件

javascript - 类选择器弄乱了 Angular 2 中表格的渲染

angular - 合并两个 rxjs 流并仅在第一个为真时发出

java - 让应用程序的多个实例在 Apache Tomcat 中运行的最佳方法是什么?

Java泛型返回类型问题

javascript - 在 NgbTooltip 内容中包含超链接(带有 _blank 目标)属性

tomcat - jetty 部署 war 文件

java - 写入 catalina.out 的不同消息