4

我遇到了内页问题。它只是将页面识别为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>

模板.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>

登录.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>

输出

在此处输入图像描述

4

4 回答 4

11

由于插入的变量中重音是可以的,但是直接输入到模板中的重音不是,并且浏览器似乎知道该页面使用UTF-8(您可以在浏览器的页面信息对话框中查看) , 任何一个:

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

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

于 2013-02-19T20:47:41.967 回答
1

如果你添加这个 charset="UTF-8" 怎么样

<label charset="UTF-8" >Usuário:</label>

在 HTML 5 中,您将添加:

<meta charset="UTF-8">

在以前的 HTML 中(请注意您的代码中有小写字母..也许这可能是造成它的原因)

<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
于 2013-02-18T17:08:53.230 回答
1

我找到了解决方案。我需要使用dreamweaver 再次创建login.html 文件,然后另存为html 并将文件粘贴到eclipse 项目中。

于 2013-02-18T18:17:14.327 回答
0

在某些情况下,您可能想要对实体进行编码。如果您使用 Java 对象作为模板的数据(上下文),您可以在其中添加一个方法来编码实体:

public String htmlEntities(String input)
{
    StringBuilder sb = new StringBuilder(input.length());
    for (char c : input.toCharArray()) {
        if (c == '"') {
            sb.append("&quot;");
        }
        else if (c == '<') {
            sb.append("&lt;");
        }
        else if (c == '>') {
            sb.append("&gt;");
        }
        else if (c < 128) {
            sb.append(c);
        }
        else {
            sb.append(String.format("&#x%04x;", (int) c));
        }
    }
    return sb.toString();
}

这可以在您的模板中使用,例如:

${htmlEntities('Usuário')}

结果将是:

Usu&#x00e1;rio
于 2016-07-28T09:57:33.470 回答