我在vm中有这个模板:
<div>
$submitterMessage
</div>
变量$ submitterMessage包含特殊字符,如è,à,ò。
在我的模板中,变量的输出是:
我如何解决它?
由于
答案 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; ,...