您好,感谢您阅读我的文章。
我正在使用Tomcat7开发一个Java动态Web项目。
我的问题是"c:out"如何在JSP中呈现数字字符引用。
在"web.xml"中,我有以下"上下文参数":
<context-param>
<param-name>S_IF_MSG_USER_INFO_MY_ACCOUNT_4</param-name>
<param-value>démarrer un nouveau ticket,</param-value>
</context-param>
在JSP"foo.JSP"中,我有以下"c:out":
<c:out value="${initParam['S_IF_MSG_USER_INFO_MY_ACCOUNT_4']}"></c:out>
如果我在浏览器中请求JSP"foo.JSP"并查看结果页面的源代码,则字符串démarrer un nouveau ticket,
已被démarrer un nouveau ticket,
替换这意味着数字字符参考CCD_ 3已被字符CCD_。
我不希望发生这种事。特别是,因为如果Web浏览器字符编码被手动更改(默认为UTF8)为"Western ISO-8859-1",我会得到两个字节(0xC3 0xA9)而不是é。这确实是可以预测的,但这正是我试图通过使用数字字符引用来避免的。
我能做什么?我哪里搞混了?顺致敬意,
编辑1
我也尝试过不使用"c:out":
CCD_ 5。
不幸的是,它还将é
转换为é
。
我在项目中添加了一个方法escapeCharactersWithAnAccute()
。
此方法将字符串作为输入,并返回包含此集合中字符的字符串http://www.sagehill.net/livedtd/xhtml1-transitional/xhtml-lat1.ent.html替换为其数字字符引用。
然后,在JSP中,如果我写下面这样的东西,我会得到预期的结果:
<c:out escapeXml="false" value="${isd_fun:escapeCharactersWithAnAccute(initParam['S_IF_MSG_USER_INFO_MY_ACCOUNT_4'])}"></c:out>