您好,感谢您阅读我的帖子。
我正在使用Tomcat7开发Java动态Web项目。
我的问题是关于“c:out”如何在JSP中呈现数字字符引用。
在“web.xml”中,我有以下“context-param”:
<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,
意味着数字字符引用é
已替换为字符é
(一个字节0xE9)。
我不希望这种情况发生。 特别是,因为如果Web浏览器字符编码手动更改(默认情况下是UTF8)到“Western ISO-8859-1”,我得到两个字节Ã(0xC3 0xA9)而不是é。这确实是可以预测的,但这正是我试图通过使用数字字符引用来避免的。
我该怎么办?我在哪里搞砸了? 最好的问候。
编辑1
我也试过没有“c:out”:
直接 ${initParam['S_IF_MSG_USER_INFO_MY_ACCOUNT_4']}
。
不幸的是,它还会将é
转换为é
。
答案 0 :(得分:0)
我在项目中添加了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>