如“濟南網站建設”的編碼
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 編輯過