在 VB 脚本中转义单引号 >> Java 脚本
Posted
技术标签:
【中文标题】在 VB 脚本中转义单引号 >> Java 脚本【英文标题】:Escaping single quotes in VB script >> Java script 【发布时间】:2017-07-14 02:39:53 【问题描述】:我有一个用 VB 脚本编码的经典 ASP,它的脚本标记中也有 Java 脚本代码。
VS Script 有一个数组,有些行包含一个单引号。这个 VB Script 数组正在传递给 Java 脚本。由于某些字符串值包含单引号,因此将字符串传递给 Java 脚本后,网页将无法正常工作。
在传递给 Java 脚本之前,我尝试在 VB 脚本中转义单引号
Dim escapeInvalidString
escapeInvalidString = Replace(objrec.Fields("Name"), "'", """chr(39)""")
vbStr = escapeInvalidString
也试过了
escapeInvalidString = Replace(objrec.Fields("Name"), "'", "''")
我在 Java 脚本中尝试过,也没有在 VB 脚本中转义
var jsStr ="";
jsStr = '<%= vbStr %>'.replace(/'/g, "\\'");
也试过这个。
jsStr = '<%= vbStr %>'.jsStr.replace(/\"/g,'\\"');
我有一种感觉,我需要在 VB 脚本部分中转义单引号,但上述方法不起作用。任何提示将不胜感激。
【问题讨论】:
VB 代码需要输出字符串,其中嵌入的'
字符更改为\'
,但您的代码似乎试图将它们更改为''
。 (你迫不及待地想在 JS 中进行替换,因为到那时你已经从没有正确转义的字符串中得到语法错误。)
@nnnnnn 感谢您的回复。我了解我尝试做的和现在想做的之间的不同。很有帮助。
【参考方案1】:
在服务器端使用Escape,在客户端使用unescape。它们是兼容的,并且都符合 Unicode(实际上是 UCS-2)。
var jsStr = unescape('<%= Escape("foo ' bar '") %>');
【讨论】:
为什么需要取消转义?只需让服务器端代码首先生成有效的 JS。 @Kul-Tigin 非常感谢您的快速回复。我做出了改变,它现在正在工作。它比我编写的代码要简单得多! 我在同一个 ASP 上面临另一个问题。请你有时间看一下好吗? ***.com/questions/45090558/… @nnnnnn 生成有效的 JS 字符串需要努力。该字符串必须是安全的。可能有换行符、特殊字符、文字,最重要的是邪恶代码。 Escape / Unescape 使处理这些变得容易。这就是为什么我推荐它用于 ASP Classic w/VBScript,这是一个很久以前就已经过时的旧平台。如果在服务器端有一个库来清理 JS 字符串,那肯定是一个更好的选择。 @Chrissa 不客气。我会在空闲时间看看你的答案。但似乎您需要参观一下才能了解 *** 的工作原理。这里:***.com/tour以上是关于在 VB 脚本中转义单引号 >> Java 脚本的主要内容,如果未能解决你的问题,请参考以下文章