【问题标题】:encodeURIComponent or Escape in VB6VB6中的encodeURIComponent或Escape
【发布时间】:2014-09-18 07:25:57
【问题描述】:

VBScript 中是否有可用于经典 ASP 页面的 encodeURIComponent 或 Uri.EscapeDataString?

我需要这个函数来生成 jQuery 可解析的 XML。

Server.HTMLEncode 没有完成所有工作。

【问题讨论】:

  • 由于 ASP 页面是 VBScript 而不是 VB6(除非它们使用 JScript、Perl 等),VB6 中可用的替代方案无济于事,它们都是脚本不支持的 API 调用。例如,在 SHLWAPI.DLL 中有许多 URL 编码和解码调用,但脚本不能使用它们,尽管没有更多信息,我不能说它们是否会帮助你,即使可以。但也许其中一种 JScript 方法可能对您有用。
  • 您是指经典的 ASP 页面还是 VB6 应用程序?对于 VB6,请参阅 MSDN Using the .NET Framework Class Library from VB6
  • 根据上面的 cmets 更新了描述:我需要一个经典 ASP 页面的 VBScript 解决方案。使用 NotePad++ 查看时,我们会遇到一个字符“VT”(但可能还有更多)
  • 响应不应该是 url 编码的,jQuery 应该能够解析它接收到的任何有效的 XML。如果在响应中看到 VT(可能是 Vertical Tab),请在服务器端对其进行修复或将响应作为文本返回,在 js 中将其替换为重新解析为 XML

标签: jquery xml asp-classic vb6 escaping


【解决方案1】:

如果你愿意,你可以自己转义字符,根据这个链接,只有五个:What characters do I need to escape in XML documents?

因此,这样的事情应该可以工作:

//usage
EncodedXML = XMLEncode(MyDecodedXML)

//function
Function XMLEncode(str)
  XMLEncode = str
  If varType(XMLEncode) < 2 Exit Function
  XMLEncode = Replace(XMLEncode,Chr(34),"&quot;")
  XMLEncode = Replace(XMLEncode,"'","&apos;")
  XMLEncode = Replace(XMLEncode,"<","&lt;")
  XMLEncode = Replace(XMLEncode,">","&gt;")
  XMLEncode = Replace(XMLEncode,"&","&amp;")
End Function

否则,这通常使用 VBS 中的MSXML2.DOMDocument 对象来完成。文档可用here。其使用的一个简单示例是...

sFilePath = "D:\someplace\somefile.xml"
sXPath = "/SomeName/Someproperty"

Set oXMLDoc = CreateObject("MSXML2.DOMDocument")
oXMLDoc.SetProperty "SelectionLanguage", "XPath"
oXMLDoc.Async = False
oXMLDoc.Load sFilePath
If (oXMLDoc.parseError.errorCode <> 0) Then
   Set oErr = oXMLDoc.ParseError
   WScript.Echo "Could not load file " & sFilePath _
              & " , error: " & oErr.Reason
   WScript.Quit
End If

Set objNames = oXMLDoc.DocumentElement.SelectNodes(sXPath)
For Each obj in objNames
  with obj
    wsh.echo .nodeName,  .getAttribute("name")
  end with
Next

【讨论】:

  • 我们不知何故在文本中似乎有 ASCII 控制字符,如“VT”。上面的代码会处理吗?
  • 你可能想看看第二个例子,它将处理所有需要的编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多