网上一大堆GET的教程,GET有字符串长度限制。不能适应目前的应用。
自己抓数据,写了如下代码。     public static string PostData(string pInfo, string posturl)
       {
           WebClient wc = new WebClient();
           wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
           byte[] postData = Encoding.UTF8.GetBytes(pInfo);
           byte[] responseData = wc.UploadData(posturl, "POST", postData);
           return Encoding.UTF8.GetString(responseData);
       }调用方法为:
  PostData("client=t&text="+System.Web.HttpUtility.UrlEncode("好天气",Encoding.UTF8)+"&hl=zh-CN&sl=zh-CN&tl=de&multires=1&otf=2&pc=1&ssel=0&tsel=0", "http://translate.google.cn/translate_a/t");
//中文转成德文返回的内容为:[[["STEVEN durch��http","好天�","","Li��n ji��~o p��n"]],,"zh-CN",,[["STEVEN",[4],1,0,1000,0,1,0],["durch",[5],1,0,511,1,2,0],["��",[6],1,0,1000,2,3,0],["http",[7],1,0,1000,3,4,0]],[["STEVEN",4,[["STEVEN",1000,1,0]],[[0,6]],"STEVEN by �� http"],["by",5,[["durch",511,1,0],["von",488,1,0],["mit",0,1,0],["vom",0,1,0],["nach",0,1,0]],[[7,9]],""],["��",6,[["��",1000,1,0]],[[10,11]],""],["http",7,[["http",1000,1,0]],[[12,16]],""]],,,,89]
利用谷歌手动翻译的结果为:Wetter,感觉返回值不对。。哪也没看到Wetter这几个字母。
求教大牛,问题出在哪了。转码?怎么转才能正常显示
或者有没有相关的例程,感激不尽~

解决方案 »

  1.   


    private string Google_T(string texts, string languages)
            {
                string payload = "&text=" + texts + "&langpair=" + languages;
                WebRequest req = HttpWebRequest.Create(@"http://translate.google.com/translate_t?hl=zh-CN&ie=utf8");                       req.Credentials = CredentialCache.DefaultNetworkCredentials;
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.Timeout = 50000;
                req.ContentLength = payload.Length;
                Encoding encoding = Encoding.GetEncoding("UTF-8");
                Byte[] bytes = encoding.GetBytes(payload);
                req.ContentLength = bytes.Length;
                Stream newStream = null;            newStream = req.GetRequestStream();            newStream.Write(bytes, 0, bytes.Length);
                newStream.Close();
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();            if (res.StatusDescription.ToLower() != "ok")
                {
                    Console.WriteLine("无法连接!");
                }            Stream dataStream = res.GetResponseStream();
                StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding(res.CharacterSet));            string responseFromServer = null;
                responseFromServer = reader.ReadToEnd();
              
                reader.Close();
                dataStream.Close();
                res.Close();
                return responseFromServer;
               
            }
    调用:string ss = Google_T("好天气", "zh|de");
    结果是:Wetter
      

  2.   


    我怎么返回的是一个HTML页面。。难道还要截取?
      

  3.   


    处理了,改了下代码。返回[[["Sch\u00F6nes Wetter","天气不错","","Tiānqì bùcuò"]],,"zh-CN",,[["Sch\u00F6nes Wetter",[4],1,0,999,0,2,0]],[["Nice weather",4,[["Sch\u00F6nes Wetter",999,1,0],["Sch\u00F6nem Wetter",0,1,0],["Sch\u00F6nwetter",0,1,0],["Sch\u00F6ne Wetter",0,1,0],["Sch\u00F6nen Wetter",0,1,0]],[[0,12]],"Nice weather"]],,,,8]这个是JSON吧?
      

  4.   


    我也这么看,json 应该是 {["a":1]}
    这样子的。。GOOGLE真纠结。
      

  5.   

    <!-- Google Translate Element -->
    <div id="google_translate_element" style="display:block"></div><script>
    function googleTranslateElementInit() {
      new google.translate.TranslateElement({pageLanguage: "af"}, "google_translate_element");
    };</script>
    <script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>