Foxtable(狐表)用户栏目专家坐堂 → [求助]百度AI通用翻译


  共有2904人关注过本帖树形打印复制链接

主题:[求助]百度AI通用翻译

帅哥哟,离线,有人找我吗?
天一生水
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1137 积分:11218 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]百度AI通用翻译  发帖心情 Post By:2020/2/19 15:56:00 [只看该作者]

蓝老师好!能不能把百度通用翻译模块加入到您置顶的示例里?

百度AI:http://fanyi-api.baidu.com/api/trans/product/apidoc#joinFile

下载的c#demo,用vs2008打开后的代码如下:

 

using System;
using System.Text;
using System.Net;
using System.IO;
using System.Security.Cryptography;
using System.Web;

namespace TransAPICSharpDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 原文
            string q = "apple";
            // 源语言
            string from = "en";
            // 目标语言
            string to = "zh";
            // 改成您的APP ID
            string appId = "2015063000000001";
            Random rd = new Random();
            string salt = rd.Next(100000).ToString();
            // 改成您的密钥
            string secretKey = "12345678";
            string sign = EncryptString(appId + q + salt + secretKey);
            string url = "http://api.fanyi.baidu.com/api/trans/vip/translate?";
            url += "q=" + HttpUtility.UrlEncode(q);
            url += "&from=" + from;
            url += "&to=" + to;
            url += "&appid=" + appId;
            url += "&salt=" + salt;
            url += "&sign=" + sign;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.C;
            request.UserAgent = null;
            request.Timeout = 6000;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            Console.WriteLine(retString);
            Console.ReadLine();
        }
        // 计算MD5值
        public static string EncryptString(string str)
        {
            MD5 md5 = MD5.Create();
            // 将字符串转换成字节数组
            byte[] byteOld = Encoding.UTF8.GetBytes(str);
            // 调用加密方法
            byte[] byteNew = md5.ComputeHash(byteOld);
            // 将加密结果转换为字符串
            StringBuilder sb = new StringBuilder();
            foreach (byte b in byteNew)
            {
                // 将字节转换成16进制表示的字符串,
                sb.Append(b.ToString("x2"));
            }
            // 返回加密的字符串
            return sb.ToString();
        }
    }

 


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105495 积分:536466 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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)

 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1137 积分:11218 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By: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)

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105495 积分:536466 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1228 威望:0 精华:0 注册:2014/1/23 0:48:00
[求助]百度翻译求小例,英语到其他小语种。  发帖心情 Post By:2020/4/6 1:00:00 [只看该作者]

亲,你这个能回复个小例给我吗?我也学学怎么做。Tq

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105495 积分:536466 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/6 10:08:00 [只看该作者]

以下是引用jimmyhwang在2020/4/6 1:00:00的发言:
亲,你这个能回复个小例给我吗?我也学学怎么做。Tq

参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=139788,大同小异

 回到顶部