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


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

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

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


加好友 发短信
等级:五尾狐 帖子:1139 积分:11245 威望: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


加好友 发短信
等级:五尾狐 帖子:1139 积分:11245 威望: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)

 回到顶部