转义速度模板中的特殊字符

时间:2015-02-16 13:54:45

标签: java html velocity

我在vm中有这个模板:

<div>
    $submitterMessage
</div>

变量$ submitterMessage包含特殊字符,如è,à,ò。

在我的模板中,变量的输出是:

我如何解决它?

由于

2 个答案:

答案 0 :(得分:2)

在该上下文中,您应该应用HTML编码/转义。 根据速度,准备功能是: http://velocity.apache.org/tools/devel/generic/EscapeTool.html#html%28%29

对于更复杂的上下文,例如:html属性,嵌套的javascript等......你也可以使用OWASP的ESAPI或http://www.unbescape.org/。 这样可以防止代码中出现XSS漏洞。

最后但并非最不重要的是,您可能希望使用UTF-8输出; 在http响应和页面的html标题中设置正确的内容类型标题。

答案 1 :(得分:1)

指定Tom Kriek建议的HTML5字符集可以直接在您的模板中完成,位于<head>部分:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

但是,你还必须告诉Velocity你输出的是UTF-8字符。您只需将以下内容添加到velocity.properties文件中:

input.encoding = UTF8
output.encoding = UTF8

您只需使用EscapeTool输出&#39;&lt;&#;;&#39;&amp;,&#39;,&#39;&gt;&#39; ,...