ASP转码函数
作者:刚子 日期:2009-07-01
昨天做了一个UTF-8页面传值给GB2312页面的东东,结果一直乱码。我一共找了两个asp的转码函数,最后结果都有些问题。传来的值如果是汉字的 并且位数为偶数 也可以正常转码 如果传来的汉字总数是奇数 那么无法转码 依然是乱码。头疼,睡觉前去CSDN发个贴子,今天一起来赶紧打开一看,哦也,有高手搞定了,下面发代码:
(CSDN原版帖子见http://topic.csdn.net/u/20090701/06/98459778-fdda-4f04-8f4a-c08d92ae2692.html?seed=631970123)
程序代码
(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
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
评论: 0 | 引用: 0 | 查看次数: -
发表评论
上一篇
下一篇

文章来自:
Tags: