西里尔字符作为 URL 参数的问题

Problem With Cyrillic Characters as URL Parameter

我正在尝试通过从 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();
        }
    }       
}

如有任何建议,我们将不胜感激。

多亏了这个 comment 我才设法收到格式正确的回复。 问题是我没有在 URL:

中使用两个重要参数

ie=UTF-8

oe=UTF-8

URL 应该是这样的:

https://translate.googleapis.com/translate_a/single?client=gtx&sl=BG&tl=EN&dt=t&q=Здравей%20Свят!&ie=UTF-8&oe=UTF-8