ASP转码函数

昨天做了一个UTF-8页面传值给GB2312页面的东东,结果一直乱码。我一共找了两个asp的转码函数,最后结果都有些问题。传来的值如果是汉字的 并且位数为偶数 也可以正常转码 如果传来的汉字总数是奇数 那么无法转码 依然是乱码。头疼,睡觉前去CSDN发个贴子,今天一起来赶紧打开一看,哦也,有高手搞定了,下面发代码:
(CSDN原版帖子见http://topic.csdn.net/u/20090701/06/98459778-fdda-4f04-8f4a-c08d92ae2692.html?seed=631970123
程序代码 程序代码
Public QueryString
Set QueryString = Server.CreateObject("Scripting.Dictionary")
Call ProcessQueryString("utf-8")

Dim key
For Each key In QueryString.Keys
    Response.Write "QueryString(" & key & ") = " & QueryString(key)
Next

Public Sub ProcessQueryString(ByVal charset)
    Dim qs, arr, ptr, tmp
    qs = Request.ServerVariables("QUERY_STRING")
    'qs = "as_q=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD&hl=zh-CN&newwindow=1&num=10&btnG=Google+%E6%90%9C%E7%B4%A2&as_epq=&as_oq=&as_eq=&lr=lang_zh-CN&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights="
    arr = Split(qs, "&")
    For Each ptr In arr
        tmp = Split(ptr, "=", 2)
        If UBound(tmp) = 1 Then
            QueryString(URLDecode(tmp(0), charset)) = URLDecode(tmp(1), charset)
        End If
    Next
End Sub

Public Function URLDecode(ByVal data, ByVal charset)
    Dim strm
    Set strm = Server.CreateObject("ADODB.Stream")
    With strm
        .type = 2
        .charset = "iso-8859-1"
        .open
        .writeText unescape(data)
        .position = 0
        .charset = charset
        URLDecode = .readText(-1)
        .close
    End With
    Set strm = Nothing
End Function



文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.