从谷歌翻译中转换c#中的字符串

时间:2014-12-28 21:17:26

标签: c# string utf-8 google-translate

我正在创建一个小字典,还有使用谷歌翻译的附加选项。所以这就是问题所在:当我收到Google的回复并在文本框中显示时,我会看到一些奇怪的符号。 这是"要求"的方法的代码。谷歌:

public string TranslateText(string inputText, string languagePair)
    {
        string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", inputText, languagePair);

        WebClient webClient = new WebClient();
        webClient.Encoding = System.Text.Encoding.UTF8;

        // Get translated text
        string result = webClient.DownloadString(url);

        result = result.Substring(result.IndexOf("<span title=\"") + "<span title=\"".Length);
        result = result.Substring(result.IndexOf(">") + 1);
        result = result.Substring(0, result.IndexOf("</span>"));

        return result.Trim();
    }

..并像这样调用此方法(点击翻译按钮后):

string resultText;
string inputText = tbInputWord.Text.ToString();

if (inputText != null && inputText.Trim() != "")
{
     ExtendedGoogleTranslate urlTranslate = new ExtendedGoogleTranslate();

     resultText = urlTranslate.TranslateText(inputText, "en|bg");

     tbOutputWord.Text = resultText;
 }

所以我正在从英语(en)翻译成保加利亚语(bg)并使用 UTF8 编码 webClient ,所以我认为我错过了来电代码 >以某种方式解析 resultText ,然后再将其放入 tbOutputWord 文本框。我知道这段代码有效,因为如果我选择从英语翻译成法语(例如),它会显示正确的结果。

1 个答案:

答案 0 :(得分:2)

不知何故,Google不尊重ie=UTF8查询参数。我们需要在请求中添加一些标头,以便返回UTF8:

WebClient webClient = new WebClient();
webClient.Encoding = System.Text.Encoding.UTF8;
webClient.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0");
webClient.Headers.Add(HttpRequestHeader.AcceptCharset, "UTF-8");