asp用ajax,ASP使用ajax来传递中文参数的编码处理,

ECMAScript v3 已从标准中删除了 escape() 函数和 unescape() 函数,并反对使用它们,因此应该使用 decodeURI() 和 decodeURIComponent() 取而代之。

… All of the language features and behaviours specified in this annex have one or more undesirable characteristics and in the absence of legacy usage would be removed from this specification. …

… Programmers should not use or assume the existence of these features and behaviours when writing new ECMAScript code. …

https://www-archive.mozilla.org/js/language/E262-3.pdf

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape

Function vbsUnEscape(str)

Dim i,s,c

s=""

For i=1 to Len(str)

c=Mid(str,i,1)

If Mid(str,i,2)="%u" and i<=Len(str)-5 Then

If IsNumeric("&H" & Mid(str,i+2,4)) Then

s=s & CHRW(CInt("&H" & Mid(str,i+2,4)))

i=i+5

Else

s=s & c

End If

ElseIf c="%" and i<=Len(str)-2 Then

If IsNumeric("&H" & Mid(str,i+1,2)) Then

s=s & CHRW(CInt("&H" & Mid(str,i+1,2)))

i=i+2

Else

s=s & c

End If

Else

s=s & c

End If

Next

vbsUnEscape=s

End Function

另附上一般这里用不上的vbsEscape:

'escape时不变的7个符号: *(42) +(43) -(45) .(46) /(47) @(64) _(95)

Function vbsEscape(str)

dim i,s,c,a

s=""

For i=1 to Len(str)

c=Mid(str,i,1)

a=ASCW(c)

If (a>=48 and a<=57) or (a>=65 and a<=90) or (a>=97 and a<=122) Then

s = s & c

ElseIf InStr("@*_+-./",c)>0 Then

s = s & c

ElseIf a>0 and a<16 Then

s = s & "%0" & Hex(a)

ElseIf a>=16 and a<256 Then

s = s & "%" & Hex(a)

Else

s = s & "%u" & Hex(a)

End If

Next

vbsEscape = s

End Function

如果,在前端使用的是encodeURI/encodeURIComponent,而不是escape,那么,后端还可以像下面这样写:

Function strDecode(str)

Dim objScript

Set objScript = Server.CreateObject("ScriptControl")

objScript.Language = "JavaScript"

strDecode = objScript.Eval("decodeURIComponent(""" & str & """.replace(/\+/g,"" ""))")

Set objScript = NOTHING

End Function

%>

上面的vbsUnEscape函数也可以这么写!

原文:https://xushanxiang.com/2019/11/asp-ajax-escape.html

本站文章为3672js教程网友分享投稿,版权归原作者,欢迎任何形式的转载,但请务必注明出处。同时文章内容如有侵犯了您的权益,请联系我们处理。

相关内容

暂无相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值