簡體   English   中英

Spring 引導:如何將 JSPF 文件中的編碼設置為 UTF-8

[英]Spring Boot: how to set encoding in JSPF files to UTF-8

我正在努力編碼 jspf 文件。 當我在 jspf 中插入德語變音符號(例如“ä”)時,瀏覽器中的 output 被破壞(一些不可讀的字符)。

我啟動 Spring 從 eclipse 內部啟動,jspf 文件本身編碼為 UTF-8。

請注意,此問題僅適用於 jspf 文件 使用 jsp 文件,一切正常,因為它們包含頁面指令<%@ page contentType="text/html;charset=UTF-8"%>

這是我迄今為止嘗試過的(沒有一個有效):

  • Insert spring.http.encoding.charset=UTF-8, spring.http.encoding.enabled=true, spring.http.encoding.force=true in application.properties
  • application.properties中插入server.servlet.encoding.charset=UTF-8, server.servlet.encoding.enabled=true, server.servlet.encoding.force=true
  • 使用-Dfile.encoding=UTF-8作為 JVM arg
  • 使用CharacterEncodingFilter

唯一可行的選擇是在 jspf 文件中插入頁面指令:

<%@ page contentType="text/html;charset=UTF-8"%>

但這必須插入到每個 jspf 文件中。 我正在尋找一些全球性的選擇。

默認情況下,JSPF 編碼其 ISO-8859-1,您找到的解決方案是更改編碼的正確方法,正如您所說,修改每個文件可能會很痛苦。 我知道以最簡單的方式進行更改的方法是將其添加到您的web.xml

<jsp-config>
<jsp-property-group>
    <url-pattern>/*</url-pattern>
    <page-encoding>UTF-8</page-encoding>
</jsp-property-group>

或者更改應用程序服務器的上下文,如果您使用的是 Tomcat 或其他服務器,則為 idk。

提供的解決方案不能直接應用於 Spring 引導,因為它沒有“具有” web.xml。

相反,您必須以編程方式配置屬性組:

@Component
public class JspContextCustomizer implements TomcatContextCustomizer {
  @Override
  public void customize(Context context) {
    JspPropertyGroup group = new JspPropertyGroup();
    group.addUrlPattern("/*");
    group.setPageEncoding("UTF-8");
    context.setJspConfigDescriptor(new JspConfigDescriptorImpl(
      Collections.singletonList(new JspPropertyGroupDescriptorImpl(group)),
      Collections.emptyList()));
  } 
}

這行得通!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM