以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]百度AI通用翻译 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=146229) |
-- 作者:天一生水 -- 发布时间:2020/2/19 15:56:00 -- [求助]百度AI通用翻译 蓝老师好!能不能把百度通用翻译模块加入到您置顶的示例里? 百度AI:http://fanyi-api.baidu.com/api/trans/product/apidoc#joinFile 下载的c#demo,用vs2008打开后的代码如下:
using System; namespace TransAPICSharpDemo
|
-- 作者:有点蓝 -- 发布时间:2020/2/19 16:25:00 -- 全局代码 Public Function EncryptString(ByVal str As String) As String Dim md5 = System.Security.Cryptography.MD5.Create() Dim byteOld As Byte() = Encoding.UTF8.GetBytes(str) Dim byteNew As Byte() = md5.ComputeHash(byteOld) Dim sb As New StringBuilder() For Each b As Byte In byteNew sb.Append(b.ToString("x2")) Next Return sb.ToString() End Function 调用 Dim q As String = "apple" Dim from As String = "en" Dim [To] As String = "zh" Dim appId As String = "2015063000000001" Dim rd As Random = New Random() Dim salt As String = Rand.Next(100000).ToString() Dim secretKey As String = "12345678" Dim sign As String = EncryptString(appId & q & salt & secretKey) Dim url As String = "http://api.fanyi.baidu.com/api/trans/vip/translate" Dim hc As New HttpClient(url ) hc.ContentType = "application/x-www-form-urlencoded" hc.FormData.Add("q",UrlEncode(q)) hc.FormData.Add("from",from) hc.FormData.Add("to",[To]) hc.FormData.Add("appid",appid) hc.FormData.Add("salt",salt) hc.FormData.Add("sign",sign) hc.Timeout = 6000 Dim ret As String = hc.GetData msgbox(ret) |
-- 作者:天一生水 -- 发布时间:2020/2/19 20:39:00 -- 谢谢蓝老师! 比如msgbox(ret)显示为: {"from":"en","to":"zh","trans_result":[{"src":"Apple","dst":"\\u82f9\\u679c"}]} 我想先获取字符串中的"\\u82f9\\u679c",然后再转换为中文字符,为什么第1步就报错? ...... \'1、获取译文的unicode编码 Dim jo As JObject = JObject.Parse(ret) Dim str as string = jo("trans_result")("dst") ’报错 \'2、转换unicode编码为中文字符 Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "\\\\u.{4}|.+?") Dim c As String = "" For i As Integer = 0 To mc.count - 1 Dim v As String = mc(i).Value If v.StartsWith("\\u") Then c &= chrw(Convert.ToInt32(v.substring(2), 16)) Else c &= v End If Next msgbox(c) |
-- 作者:有点蓝 -- 发布时间:2020/2/20 9:23:00 -- 不需要转换的,直接读出来即可 …… Dim jo As JObject = JObject.Parse(ret) Dim str As String = jo("trans_result")(0)("dst") msgbox(str) |
-- 作者:jimmyhwang -- 发布时间:2020/4/6 1:00:00 -- [求助]百度翻译求小例,英语到其他小语种。 亲,你这个能回复个小例给我吗?我也学学怎么做。Tq |
-- 作者:有点蓝 -- 发布时间:2020/4/6 10:08:00 -- 以下是引用jimmyhwang在2020/4/6 1:00:00的发言:
参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=139788,大同小异
亲,你这个能回复个小例给我吗?我也学学怎么做。Tq |