网站建设 郑州网站建设 网站制作 网页设计 网站设计 郑州建网站 - 爱易在线

网站地图 | 网站Tags标签 | RSS订阅 | 加入收藏
您的位置:网站首页 > 博客笔记 > 技术交流 > 正文 技术交流相关信息

asp utf-8编码通过url传值乱码的解决办法

作者:郑州网站建设 2015/5/12 1:04:35 点击: 来源:

asp全局使用utf-8编码,一切正常,但是通过url传递中文参数,用Request.QueryString()获取参数的值的时候会出现乱码的现象。

解决方法一、

可以通过传递参数的时候用js把中文用urlencode编码,再在asp页面用urldecode解码。注意 js的urlencode是utf-8的,asp页面的decode也要保持utf-8的解码才行。

asp的urldecode函数utf-8版本的代码如下:


Private Function UrlEncode_GBToUtf8(szInput) 
    Dim wch, uch, szRet 
    Dim x 
    Dim nAsc, nAsc2, nAsc3 
    If szInput = "" Then
        UrlEncode_GBToUtf8_V2= szInput 
        Exit Function
    End If
    For x = 1 To Len(szInput) 
        wch = Mid(szInput, x, 1) 
        nAsc = AscW(wch) 
        If nAsc < 0 Then nAsc = nAsc + 65536 
        If wch = "+" then
            szRet = szRet & "%2B"
        ElseIf wch = "%" then
            szRet = szRet & "%25"
        ElseIf (nAsc And &HFF80) = 0 Then
            szRet = szRet & wch 
        Else
            If (nAsc And &HF000) = 0 Then
                uch = "%" & Hex(((nAsc \ 2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80) 
                szRet = szRet & uch 
            Else
                uch = "%" & Hex((nAsc \ 2 ^ 12) Or &HE0) & "%" & _ 
                Hex((nAsc \ 2 ^ 6) And &H3F Or &H80) & "%" & _ 
                Hex(nAsc And &H3F Or &H80) 
                szRet = szRet & uch 
            End If
        End If
    Next
    UrlEncode_GBToUtf8= szRet 
End Function

方法二、传递时用js的escape函数把中文编码,再在asp端解码

asp端的解码函数代码如下:

Function UnEscape(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
    UnEscape = s
End Function








Tag:
分享到:

上一篇:Sublime自定义CMS标签语法

下一篇:EF6 Code First 完美支持Sqlite

技术交流推荐阅读

用户评论

最新博文

热门排行

推荐信息

关于爱之易| 付款方式| 联系我们| 网站地图| 网站Tags标签 | RSS订阅