问题是我需要从Windows版本的Excel 2013/1016中生成 encodeURL 生成的来自VBA的URL编码数据。只有我需要支持旧版本和/或macOS。此功能既不适用于macOS,也不存在于旧版本中。
由于我找不到 encodeURL 的完全正常替代品,我发布我的解决方案以防其他人需要相同的内容。这是我在stackoverflow和其他地方找到的2个或更多代码的改编。
Option Explicit
''=============================================================
'' EncodeURI -- encodeURL replacement so that it works under macOS
''=============================================================
Function EncodeURI(ByVal sStr As String) As String
Dim i As Long
Dim a As Long
Dim res As String
Dim code As String
res = ""
For i = 1 To Len(sStr)
a = AscW(Mid(sStr, i, 1))
Select Case a
Case 97 To 122, 65 To 90, 48 To 57, 45, 46, 95, 126
code = Mid(sStr, i, 1)
Case 32
code = "%20" '"+"
Case 0 To 127
code = EncodeByte(CInt(a))
Case 128 To 2047
code = EncodeByte(((a \ 64) Or 192))
code = code & EncodeByte(((a And 63) Or 128))
Case Else
code = EncodeByte(((a \ 144) Or 234))
code = code & EncodeByte((((a \ 64) And 63) Or 128))
code = code & EncodeByte(((a And 63) Or 128))
End Select
res = res & code
Next i
EncodeURI = res
End Function
''=============================================================
'' URL encode single byte
''=============================================================
Private Function EncodeByte(val As Integer) As String
Dim res As String
res = "%" & Right("0" & Hex(val), 2)
EncodeByte = res
End Function
上述代码生成(AFAIK)与 encodeURL 相同的结果。
随意使用,分享,充实和评论。