jsp模板数据中的\\\\$转换为\$

发布于 2024-07-10 16:00:22 字数 501 浏览 7 评论 0原文

我刚刚偶然发现 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南七夏 2024-07-17 16:00:23

\$ 位于 规范(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 \%.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文