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>

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>

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>

出力

ここに画像の説明を入力

4

4 に答える 4

11

アクセントは挿入された変数で問題ありませんでしたが、テンプレートに直接入力されたアクセントはそうではなく、ブラウザーはページが UTF-8 を使用していることを認識しているようです (ブラウザーのページ情報ダイアログで確認できます)。 、 また:

  • テンプレート ファイルが間違ったエンコードで保存されました。Eclipse では、[ウィンドウ] -> [設定] -> [ワークスペース] に移動し、テキスト ファイルのエンコーディングを 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 に答える