|
上篇文字PHP使用Google的translate API写了以后,突然想做个ASP的类,以致asp用户使用。遂写起,发现asp忘了不少。如主题吧,思路和C#的这篇是完全一样的,我只是把它兑成ASP的实现方式而已。
直接看代码: 复制代码 代码如下: Class GoogleTranslator sub Class_Initialize() RURI="http://translate.google.com/translate_t?langpair={0}&text={1}" End Sub Private Opt_ ' Property Get Opt Opt=Opt_ End Property Property Let Opt(Opt_s) Opt_=Opt_s End Property Private RURI Function AnalyzeChild(patrn,texts,IPos) Dim regEx, Match, Matches Set regEx = New RegExp regEx.IgnoreCase = true regEx.Global = True regEx.Pattern = patrn regEx.Multiline = True Dim RetStr Set Matches = regEx.Execute(texts) If(Matches.Count > 0)Then RetStr= Matches(0).SubMatches(IPos) AnalyzeChild=RetStr Set regEx =Nothing End Function Function getHTTPPage(url) dim objXML set objXML=server.createobject("MSXML2.XMLHTTP")'定义 objXML.open "GET",url,false'打开 objXML.send()'发送 If objXML.readystate<>4 then exit function End If getHTTPPage=BytesToBstr(objXML.responseBody) set objXML=nothing'关闭 if err.number<>0 then err.Clear End Function Function BytesToBstr(body) dim objstream set objstream = Server.CreateObject("adodb.stream") objstream.Type = 1 objstream.Mode =3 objstream.Open objstream.Write body objstream.Position = 0 objstream.Type = 2 objstream.Charset = "utf-8" '转换原来默认的UTF-8编码转换成GB2312编码,否则直接用XMLHTTP调用有中文字符的网页得到的将是乱码 BytesToBstr = objstream.ReadText objstream.Close set objstream = nothing End Function Public Function GetText(str) If(isempty(str)) Then Exit Function Dim newUrl,Rs newUrl=Replace(Replace(RURI,"{0}",Server.URLEncode(Opt)),"{1}",Server.URLEncode(str)) Rs=getHTTPPage(newUrl) GetText = AnalyzeChild("(<div id=result_box dir=""ltr"">)([?:\s\S]*?)(</div>)",Rs,1) End Function Sub class_Terminate End Sub End Class
然后使用的时候: 复制代码 代码如下: Dim Obj Set Obj = new GoogleTranslator Obj.Opt="zh-CN|en" response.write(Obj.GetText("我们"))
然后就可以了,需要注意的是因为Google的任何产品都是UTF-8格式的,这个asp文件保存为UTF-8格式,并在开头加上: <%@ LANGUAGE=VBScript CodePage=65001%> <%Option Explicit '... 开抄我上面的代码 就可以了。 |
|