【发布时间】:2016-10-18 15:20:30
【问题描述】:
首先,这不是我为 GoogleTranslate API 付费的解决方案。
我正在尝试使用 Get 方法翻译一个包含特殊字符“&”的简单短语。
"Me & You"
这是我写的方法:
Public Function Google_Translate(ByVal Input As String, _
ByVal From_Language As Languages, _
ByVal To_Language As Languages) As String
Dim webClient As New System.Net.WebClient
Dim str = webClient.DownloadString( _
"http://translate.google.com/translate_a/t?client=t&text=" & Input & _
"&sl=" & Formatted_From_Language & _
"&tl=" & Formatted_To_Language & "")
' Debug: MsgBox(str)
Return (str.Substring(4, str.Length - 4).Split(ControlChars.Quote).First)
End Function
这是一个用法示例:
Google_Translate("Me and you", Languages.en, Languages.en)
结果是相同的字符串,因为我已经从英文翻译成英文:
"Me and you"
问题是当我尝试使用任何特殊的 HTML 字符时,例如“&”:
Google_Translate("Me & you", Languages.en, Languages.en)
结果:
"Me"
这是没有拆分的字符串:
[[["Me","Me","",""]],,"en",,,,,,,0]
这就是我尝试过的全部:
Unicode 标识符:
Google_Translate("Me \u0026 you")
HTML 实体:
Google_Translate("Me & you")
HTML 转义实体:
Google_Translate("Me &H38; you")
...和 HTML 百分比:
Google_Translate("Me %26 you")
...使用百分比调用方法我得到一个带有 Unicode 标识符的字符串:
[[["Me \u0026 you","Me \u0026 you","",""]],,"en",,,,,,[["en"]],0]
这可能意味着我唯一需要做的就是从 Google 获取字符串并翻译 unicode 标识符,仅此而已? ...不是!因为如果我使用其他特殊字符调用 Google,我不会得到任何 unicode 标识符:
Google_Translate("Hello·"" World¿?", GoogleTranslate_Languages.en, GoogleTranslate_Languages.en)
结果:
"Hello·\" World¿?"
没有拆分的结果:
[[["Hello·\" World¿?","Hello·\" World¿?","",""]],,"en",,,,,,[["en"]],0]
我错过了什么?
如何使用特殊字符作为 &%$"¿ 以正确的方式发送/获取数据??
【问题讨论】:
-
首先,不是我买车的解决方案。每当我试图进入
Elektro Hacker's车时,警报就会响起。我错过了什么? -
@Robert McKee 真的我无法理解你的讽刺,你的问题是什么?,谷歌网络服务是免费的,为什么我不会尝试使用它?,一个优秀的程序员寻找替代方法做事。有些人不需要为 API 的所有功能付费,我想以零星的方式使用它,我不想花 20 美元每月只使用 1 到 2 次 GoogleTranslate,还有 API每 1.000.000 个翻译字符(小偷)的使用限制为 20 美元。
-
谷歌翻译 API REST 网络服务不是免费的:developers.google.com/translate 你正在尝试不付费使用 v1 API,当它是付费服务时,这确实是在窃取。跨度>
-
另外,请阅读第5节题为“费用”的最后一句:developers.google.com/translate/v2/terms,其中注明
You may not access the Translate API in a manner intended to avoid incurring fees.
标签: .net vb.net get google-translate