在VB6.0中怎么实现escape和unescape,需要引用哪个API?

bsetsail 2011-10-07 07:15:36
如题
谢谢!
...全文
493 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
橘子皮... 2012-12-15
  • 打赏
  • 举报
回复
第一个代码当含有( ' "之类的字符时会有出错可能
橘子皮... 2012-12-15
  • 打赏
  • 举报
回复
引用 11 楼 Eagle112 的回复:
第二种方法不会报错,但有部分符号是要转换的 需要将 Case "0" To "9", "a" To "z", "A" To "Z", _ "-", "_", ".", "!", "~", "*", "'", "(", ")" 更改为 Case "0" To "9", "a" To "z", "A" To "Z", _……
你错了,第2个代码某些时候还是出错
Eagle112 2012-07-07
  • 打赏
  • 举报
回复
第二种方法不会报错,但有部分符号是要转换的

需要将
Case "0" To "9", "a" To "z", "A" To "Z", _
"-", "_", ".", "!", "~", "*", "'", "(", ")"


更改为
Case "0" To "9", "a" To "z", "A" To "Z", _
"-", "_", "/", ".", "*", "@"
Eagle112 2012-07-07
  • 打赏
  • 举报
回复
第一种方法当字符串中含有特殊字符时会报错
bsetsail 2011-10-13
  • 打赏
  • 举报
回复
测试过了,两种方法都没报错
用户 昵称 2011-10-08
  • 打赏
  • 举报
回复
看答案才看懂问题
嗷嗷叫的老马 2011-10-07
  • 打赏
  • 举报
回复
Function Escape(ByVal Text As String) As String
Dim s As String
Dim ch As String
Dim iAscii As Integer
Dim i As Long

For i = 1 To Len(Text)
ch = Mid$(Text, i, 1)
Select Case ch
Case "0" To "9", "a" To "z", "A" To "Z", _
"-", "_", ".", "!", "~", "*", "'", "(", ")"
s = s & ch
Case Else
iAscii = AscW(ch)
If (0 <= iAscii) And (iAscii < 255) Then
s = s & ("%" & Right$("0" & Hex(iAscii), 2))
Else
s = s & ("%u" & Right$("000" & Hex(iAscii), 4))
End If
End Select
Next

Escape = s
End Function

Function Unescape(ByVal Text As String) As String
Dim i As Long

For i = 1 To Len(Text)
If Mid$(Text, i, 2) = "%u" Then Text = Replace$(Text, Mid$(Text, i, 6), ChrW$(AscW(ChrW$("&H" & Mid$(Text, i + 2, 4)))))
If Mid$(Text, i, 1) = "%" Then Text = Replace$(Text, Mid$(Text, i, 3), Chr$(Asc(Chr$("&H" & Mid$(Text, i + 1, 2)))))
Next i
Unescape = Text
End Function
倒,还以为没发成功.

调用对象如果出错,就使用代码自己转换吧.
嗷嗷叫的老马 2011-10-07
  • 打赏
  • 举报
回复
什么错?什么情况下报?
嗷嗷叫的老马 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wowfiowow 的回复:]
你这个有时候会报错!![/Quote]
报什么错?什么情况下?
橘子皮... 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 myjian 的回复:]

VB code
Function Escape(ByVal pstrInput As String) As String
Dim objScrCtl As Object

Set objScrCtl = CreateObject("MSScriptControl.ScriptControl")
objScrCtl.Language = "Java……
[/Quote]

你这个有时候会报错!!
贝隆 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 myjian 的回复:]
VB code
Function Escape(ByVal pstrInput As String) As String
Dim objScrCtl As Object

Set objScrCtl = CreateObject("MSScriptControl.ScriptControl")
objScrCtl.Language = "J……
[/Quote]
学习了。。
嗷嗷叫的老马 2011-10-07
  • 打赏
  • 举报
回复
如果有性能要求,就写到一个类里,类初始化时将objScrCtl初始化,类销毁时objScrCtl销毁.
嗷嗷叫的老马 2011-10-07
  • 打赏
  • 举报
回复
Function Escape(ByVal pstrInput As String) As String
Dim objScrCtl As Object

Set objScrCtl = CreateObject("MSScriptControl.ScriptControl")
objScrCtl.Language = "JavaScript"
Unescape = objScrCtl.Eval("escape('" & pstrInput & "')")
Set objScrCtl = Nothing
End Function

Function Unescape(ByVal pstrInput As String) As String
Dim objScrCtl As Object

Set objScrCtl = CreateObject("MSScriptControl.ScriptControl")
objScrCtl.Language = "JavaScript"
Unescape = objScrCtl.Eval("unescape('" & pstrInput & "')")
Set objScrCtl = Nothing
End Function

直接创建JS对象即可.

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧