我正在创建一个小字典,还有使用谷歌翻译的附加选项。所以这就是问题所在:当我收到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 文本框。我知道这段代码有效,因为如果我选择从英语翻译成法语(例如),它会显示正确的结果。
答案 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");