jsp模板数据中的\\\\$转换为\$
我刚刚偶然发现 JSP 代码中有一个奇怪的地方。 似乎双反斜杠后跟美元或百分比符号会转换为单反斜杠(加号)。
也就是说,以下 JSP:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
\\#
\\$
\\%
\\^
呈现为:
\\#
\$
\%
\\^
我正在使用 JDK 1.6.0_02 和 Apache Tomcat 5.5.23 和 6.0.16(两台机器)。
这是 Tomcat 中的错误吗? JDK? 或者它是否符合 JSP 规范中一些晦涩的选项? 我尝试查看规范,但找不到任何有用的东西。
解决方法相当简单,我只是想我应该提交一个错误,以防万一。
编辑:呵呵,stackoverflow 也会损坏反斜杠
I just stumbled unto a weirdness in my JSP code. It seems that a double backslash followed by a dollar or percent symbol gets converted to a single backslash (plus symbol).
That is, the following JSP:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
\\#
\\$
\\%
\\^
gets rendered as:
\\#
\$
\%
\\^
I'm using JDK 1.6.0_02 and Apache Tomcat 5.5.23 and 6.0.16 (two machines).
Is this a bug in Tomcat? JDK? Or is it conforming to some obscure option in the JSP spec? I tried looking at the spec but couldn't find anything useful.
Workarounds are fairly trivial, I just thought I'd file a bug in case it is one.
EDIT: Heh, stackoverflow also mangles backslashes
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
\$ 位于 规范(JSP.1.6 节)中。 “只有当页面启用 EL 时......,文字 $ 才能被 \$ 引用。
\% 可能是因为“文字 <% 被 <\% 引用”。我怀疑解析器不检查 \% 之前的 <。
\$ is in the spec (Section JSP.1.6). "Only when EL is enabled for the page...., a literal $ can be quoted by \$.
\% will probably be because "A literal <% is quoted by <\%". I suspect that the parser isn't checking for the < before the \%.