0

私は、Hibernate、JPA、Spring で構成されるアプリケーションに取り組んでいます。

プロセスの最後に Freemarker を使用して電子メールを送信するプロセスがあります。

フリー マーカー テンプレートのデータは、データベースから入力されます。データにはデータベース内のポンド記号がありますが、freemarker がそれを処理すると、? に変換されます。シンボル。

コードは以下の通り

final StringWriter writer = new StringWriter();
Template template= freemarkerConfiguration.getTemplate("sampleReport.ftl");
template.process(this, writer);
System.out.println(writer.toString());

データベースから取得したデータを印刷すると、結果は次のようになります

INFO  05-22 10:08:18 Printing ?-- Hex :a3  

a3 - ポンド記号の 16 進コードではなく、その印刷ですか? 同じように。

私はエラーを見つけることができません

4

1 に答える 1

0

?FreeMarker はどこでも UNICODE で動作するため、 -s 自体は生成されません。Stringそれ自体ではなくその文字コードを出力しString、すでに 0x3F ( の UCS コード?) が含まれているかどうかを確認します。そうでない場合System.out.printlnは、間違ったエンコーディングを使用しているため、送信用に電子メールをエンコードするものは何でもそうです。0x3F が含まれている場合は、JDBC に問題がある可能性があります (ここでも、文字コードを出力することで JDBC からの文字列を確認できます)。そのため、FreeMarker は既に を受け取り?ます。

于 2012-05-21T17:40:33.540 に答える