在 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CSS 中转义单引号或双引号?

如何在jQuery变量中转义单引号

在 R 变量中转义单引号

如何在 ssh / 远程 bash 命令中转义单引号字符?

在 PHP/MySQL 插入中转义单引号不起作用

Postgresql在where子句中转义单引号[重复]