我正在尝试通过从C#应用程序向https://translate.googleapis.com/发送GET请求来翻译一些文本。
请求的格式应为: “ / translate_a / single?client = gtx& sl = BG & tl = EN &dt = t& q =ЗдравейСвят!”
其中 sl = 是源语言, tl = 是目标语言, q = 是要翻译的文本。
响应是一个JSON数组,其中包含翻译后的文本和其他详细信息。
问题是,当我尝试从保加利亚语到英语的翻译时,结果会像“ Р-дравРμР№РЎРІСЏС,!”那样被破坏
当我从英语翻译到保加利亚语时,这没有问题(URL中没有西里尔字母),所以我的猜测是问题出在请求中。
每当我直接从浏览器发送请求时,结果都是正确翻译的文本。
我如何做:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Net.Http;
using System.Web;
class Program
{
static void Main(string[] args)
{
string ApiUrl = "https://translate.googleapis.com/translate_a/single?client=gtx&sl={0}&tl={1}&dt=t&q={2}";
string targetLang = "en";
string sourceLang = "bg";
string text = "Здравей Свят!";
text = HttpUtility.UrlPathEncode(text);
string url = string.Format(ApiUrl, sourceLang, targetLang, text);
using (var client = new HttpClient())
{
var result = client.GetStringAsync(url).Result;
var jRes = (JArray)JsonConvert.DeserializeObject(result);
var translatedText = jRes[0][0][0].ToString();
var originalText = jRes[0][0][1].ToString();
var sourceLanguage = jRes[2].ToString();
}
}
}
任何建议将不胜感激。
答案 0 :(得分:0)