关于t.page的Freemarker utf-8编码问题

cla*_*ivp 4 html java spring freemarker utf-8

我在内页有问题.它只是将页面识别为iso,但我想要utf-8,我将其声明为默认字符集.我在freemarker配置上尝试了一些修改,但它们没有效果.

为spring-servlet.xml

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/pages/"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

template.html

<#macro page>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cemitério - Prefeitura Municipal de Maringá</title>
</head>

<body>
Usuários
<#nested/>
</body>
</html>
</#macro>
Run Code Online (Sandbox Code Playgroud)

的login.html

<#import "templates/template.html" as t/>

<@t.page>

<#if erroLogin??>
    ${erroLogin}
</#if>
<form action="entrar" method="post">
    <div>
        <label>Usuário:</label>
        <input type="text" name="usuario" />
        <br />
        <label>Senha:</label>
        <input type="text" name="senha" />
        <br />
        <input type="submit" name="submit" />
    </div>
</form>

</@t.page>
Run Code Online (Sandbox Code Playgroud)

产量

在此输入图像描述

dde*_*any 9

由于重音符号在插入的变量中都是正确的,但是直接输入到模板中的重音符号没有,并且浏览器似乎知道该页面使用了UTF-8(您可以在浏览器的页面信息对话框中查看) ,要么:

  • 模板文件使用错误的编码保存.在Eclipse中,您应该转到Window - > Preferences - > Workspace,并将文本文件编码设置为UTF-8.这是一个全局设置,但默认情况下Eclipse使用平台默认值,这在99%的项目中没有意义.您也可以在项目 - >属性 - >资源下的项目级别设置此项.

  • FreeMarker使用错误的字符集来解码模板文件,因为默认情况下它也使用默认的平台.所以你应该将default_encoding设置设置为UTF-8.您还可以使用强制模板中的编码<#ftl encoding='UTF-8'>.