【问题标题】:Escape asp/vbscript script tags转义 asp/vbscript 脚本标签
【发布时间】:2015-07-08 11:45:51
【问题描述】:

如何转义asp指令输出

所以我需要用 asp 标签打印到页面字符串

<%
response.write "<%=Count%>"
%>

但我得到错误

Microsoft VBScript 编译错误“800a0409” 未终止的字符串常量

那么如何打印脚本标签呢?

所以我需要&lt;%=Count%&gt; 而不是Count

有什么办法可以代替?

<%
    response.write "<" & "%=Count%" & ">"
%>

【问题讨论】:

  • 我认为你需要在这里编码......
  • &lt;% Response.Write "&lt;&amp;#37=Count&amp;#37&gt;" %&gt; 呢?

标签: vbscript asp-classic


【解决方案1】:

您只需要确保在尝试使用 Response.Write() 这样的东西之前进行 HTML 编码;

在这里,我使用% 的 HTML 编码值,即&amp;#37 来阻止 VBScript 运行时吐出它是虚拟的 (但你可以使用任何东西,即使是 &amp;lt; 也可以用于 &lt; 和 @987654327 @ 代表&gt; 已建议)

<%
Response.Write "<&#37=Count&#37>"
%>

输出:

【讨论】:

    【解决方案2】:

    这样做的方法是在代码块中使用&lt;script&gt; 标签而不是&lt;% ... %&gt;

    <script language="vbscript" runat="server">
        Response.Write "<%= Count %>"
    </script>
    

    输出:

    <%= Count %>
    

    【讨论】:

      【解决方案3】:

      或者,您可以通过简写 Response.Write 简单地使用 &amp;lt;&amp;gt; 字符代码:

      <%= "&lt;%= Count %&gt;" %>
      

      【讨论】:

      • 我就是这样做的。与&amp;#37 用于% 不同,&amp;lt; 用于&lt; 是相对透明的(因为您可以查看编码并且即使不查找它也可以知道它将产生什么字符),并且(与数字不同字符编码)html 命名实体通常不受语言/区域设置/编码问题的影响。另外,&lt;&gt; 是 html 中的保留字符,因此对它们进行编码而不是非保留的 % 是有意义的。
      • @Martha True,我的意思是自己强制进行 HTML 编码。无论% 还是&lt;&gt; 都无关紧要,关键是绕过运行时编码部分或全部字符串。
      • 另外 OP 没有使用速记,所以没有建议,但实际上这是给定的。只是分裂头发但同意编码&lt;&gt; 更有意义。
      猜你喜欢
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 2021-01-27
      • 2022-01-14
      相关资源
      最近更新 更多