ASP自动识别URI使用的编码(gbk/utf-8)并正确解码
|
admin
2011年12月24日 11:18
本文热度 2725
|
如“济南网站建设”的编码
GBK:%BC%C3%C4%CF%CD%F8%D5%BE%BD%A8%C9%E8
UTF-8:%E6%B5%8E%E5%8D%97%E7%BD%91%E7%AB%99%E5%BB%BA%E8%AE%BE
能不能让程序在未知何种编码格式的情况下,自动识别其编码格式,并正确解出 “济南网站建设” (Google 就能做到)
本来想如果无法用函数直接实现就只有将编码提交到Google然后采集里面的关键字,如:
http://www.google.com.hk/search?q=%BC%C3%C4%CF%CD%F8%D5%BE%BD%A8%C9%E8(GBK)或
http://www.google.com.hk/search?q=%E6%B5%8E%E5%8D%97%E7%BD%91%E7%AB%99%E5%BB%BA%E8%AE%BE(UTF-8)
采集如上两页面的内容就能识别出编码所对应的关键字是“济南网站建设”
相当于利用网络间接解码吧,但是网站程序服务器必须能够访问到互联网(未接入互联网的内网服务器无法使用)。好在终于找到的解决办法啊,ASP函数如下:
Function DecodeURI(s)
s = UnEscape(s)
Dim reg, cs
cs = “GBK”
Set reg = New RegExp
reg.Pattern = “^(?:[\x00-\x7f]|[\xfc-\xff][\x80-\xbf]{5}|[\xf8-\xfb][\x80-\xbf]{4}|[\xf0-\xf7][\x80-\xbf]{3}|[\xe0-\xef][\x80-\xbf]{2}|[\xc0-\xdf][\x80-\xbf])+$”
If reg.Test(s) Then cs = “UTF-8″
Set reg = Nothing
Dim sm
Set sm = CreateObject(“ADODB.Stream”)
With sm
.Type = 2
.Mode = 3
.Open
.CharSet = “iso-8859-1″
.WriteText s
.Position = 0
.CharSet = cs
DecodeURI = .ReadText(-1)
.Close
End With
Set sm = Nothing
End Function
DecodeURI(%BC%C3%C4%CF%CD%F8%D5%BE%BD%A8%C9%E8)
DecodeURI(%E6%B5%8E%E5%8D%97%E7%BD%91%E7%AB%99%E5%BB%BA%E8%AE%BE)
如此调用,不用指定编码便可以自动解码。
该文章在 2011/12/24 11:18:20 编辑过