vba英文文献(VBA-利用Google实现中英文互译)
群里聊天,聊到中英文翻译,之前插件里面也写过中英文互译,打开一看不能使用了?what??
群里老哥也是,他之前的翻译代码也无法使用,于是顺手看看,下面是之前的代码:
Function fy(str)
Dim xml
Dim url$, EngSentence$
Set xml = CreateObject("MSXML2.XMLHTTP")
EngSentence = UTF8EncodeURI(str)
url1 = "https://translate.google.cn/m?hl=en&sl=en&tl=zh-CN&ie=UTF-8&prev=_m&q=" & EngSentence
url2 = "https://translate.google.cn/m?hl=en&sl=zh-CN&tl=en&ie=UTF-8&prev=_m&q=" & EngSentence
If Asc(Left(str, 1)) > 0 And Asc(Left(str, 1)) < 128 Then url = url1 Else url = url2
With xml
.Open "GET", url, False
.Send
If InStr(.ResponseText, "<div dir=""ltr"" class=""t0"">") > 0 Then
fy = Split(Split(.ResponseText, "<div dir=""ltr"" class=""t0"">")(1), "</div><")(0)
Else
MsgBox "Error": Exit Function
End If
End With
End Function
Function UTF8EncodeURI(szInput)
Dim wch, uch, szRet
Dim x
Dim nAsc, nAsc2, nAsc3
If szInput = "" Then
UTF8EncodeURI = szInput
Exit Function
End If
For x = 1 To Len(szInput)
wch = Mid(szInput, x, 1)
nAsc = AscW(wch)
If nAsc < 0 Then nAsc = nAsc 65536
If (nAsc And &HFF80) = 0 Then
szRet = szRet & wch
Else
If (nAsc And &HF000) = 0 Then
uch = "%" & Hex(((nAsc \ 2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)
szRet = szRet & uch
Else
uch = "%" & Hex((nAsc \ 2 ^ 12) Or &HE0) & "%" & _
Hex((nAsc \ 2 ^ 6) And &H3F Or &H80) & "%" & _
Hex(nAsc And &H3F Or &H80)
szRet = szRet & uch
End If
End If
Next
UTF8EncodeURI = szRet
End Function
经过排查,不是请求错误,是返回的结果后对字符串处理出问题了,比如翻译 hello 返回结果其中一部分如下,要获取 你好 这2个汉字,之前的字符串处理方式不对,导致没结果。
修改处理字符串代码为下面的即可
最终结果:
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com