簡體   English   中英

使用JTwig模板的Spring webapp中的UTF-8編碼問題

[英]UTF-8 encoding issue in Spring webapp with JTwig templates

我們在Spring webapp中使用JTwig模板引擎。 它是一個很好的工具,並且具有非常好的功能,但是我們使用UTF-8打了一個帶有unicode內容編碼的牆。

首先, ViewResolver在Java中配置為:

@Bean
public ViewResolver viewResolver() {
    JtwigViewResolver view = new JtwigViewResolver()
    view.setPrefix("/WEB-INF/templates/");
    view.setSuffix(".twig");
    return view;
}

然后我們讓Spring MVC控制器添加一些文本來建模並將其傳遞給視圖:

@RequestMapping(value = "/unicode", produces  = "text/html;charset=UTF-8")
public String testUnicode(ModelMap model) {
    model.addAttribute("text", "tête de bou  간편한 설치 및 사용");
    return "testPage";
}

它最終呈現的位置:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
    <h1>tête de bouton -- 간편한 설치 및 사용</h1>
    From model: {{ text }}
</body>
</html>

但輸出實際上是:

têtedebouton - 간편한설 ? 및사용

從型號:t?te de bou ??? ?? ??

在模板中硬編碼的Unicode文本我幾乎是正確的,但是模型中的那個完全搞砸了。 有任何想法嗎?

Jtwig在渲染時使用Java的默認字符集。 這違反了Twig兼容性,因為Twig默認為UTF-8

我為3.1.0中發布的問題寫了一個補丁

您可以執行以下操作:

1) view.setEncoding("UTF-8"); 2) view.setContentType("text/html; charset=UTF-8");

第二

暫無
暫無

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

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