Utf 8 如何防止jstlc:out用单字节字符替换数字字符引用

Utf 8 如何防止jstlc:out用单字节字符替换数字字符引用,utf-8,jstl,character,rendering,Utf 8,Jstl,Character,Rendering,您好,谢谢您阅读我的帖子 我正在使用Tomcat7开发一个Java动态Web项目 我的问题是关于“c:out”如何在JSP中呈现数字字符引用 在“web.xml”中,我有以下“上下文参数”: S_IF_MSG_USER_INFO_MY_ACCOUNT_4 dé;新买主票, 在JSP“foo.JSP”中,我有以下“c:out”: 如果我在浏览器中请求JSP“foo.JSP”并查看结果页面的源代码,字符串dé;Marrrer un nouveau票,已替换为démarer u

您好,谢谢您阅读我的帖子

我正在使用Tomcat7开发一个Java动态Web项目

我的问题是关于“c:out”如何在JSP中呈现数字字符引用

在“web.xml”中,我有以下“上下文参数”:


S_IF_MSG_USER_INFO_MY_ACCOUNT_4
dé;新买主票,
在JSP“foo.JSP”中,我有以下“c:out”:


如果我在浏览器中请求JSP“foo.JSP”并查看结果页面的源代码,字符串
dé;Marrrer un nouveau票,
已替换为
démarer un nouveau票,
表示数字字符参考
é已替换为字符
é
(一个字节0xE9)

我不希望这种情况发生。 特别是,因为如果Web浏览器字符编码被手动更改(默认为UTF8)为“Western ISO-8859-1”,我得到的是两个字节(0xC3 0xA9),而不是é。这确实是可以预测的,但这正是我试图通过使用数字字符引用来避免的

我能做什么?我在哪里搞混的? 致以最良好的祝愿

编辑1

我也试过不用“c:out”:

${initParam['S_IF_MSG_USER_INFO_MY_ACCOUNT_4']}
直接使用


不幸的是,它还转换了
éescapeCharactersWithAnAccute()

此方法将字符串作为输入,并返回此集合中的字符被其数字字符引用替换的字符串

然后,在JSP中,如果我编写以下内容,就会得到预期的结果:

<c:out escapeXml="false" value="${isd_fun:escapeCharactersWithAnAccute(initParam['S_IF_MSG_USER_INFO_MY_ACCOUNT_4'])}"></c:out>

<c:out value="${initParam['S_IF_MSG_USER_INFO_MY_ACCOUNT_4']}"></c:out>
<c:out escapeXml="false" value="${isd_fun:escapeCharactersWithAnAccute(initParam['S_IF_MSG_USER_INFO_MY_ACCOUNT_4'])}"></c:out>