C# 使用谷歌进行翻译的问题

77413036 2011-05-26 04:54:40
网上一大堆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这几个字母。
求教大牛,问题出在哪了。转码?怎么转才能正常显示。。。
或者有没有相关的例程,感激不尽~
...全文
321 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangxingangtom 2011-07-13
  • 打赏
  • 举报
回复
<!-- 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>
77413036 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 isjoe 的回复:]
引用 6 楼 show_594 的回复:
引用 5 楼 isjoe 的回复:
C# code

private string Google_T(string texts, string languages)
{
string payload = "&amp;amp;text=" + texts + "&amp;amp;langpair=" + languages;
W……
[/Quote]

处理了,改了下代码。返回

[[["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吧?
isjoe 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 show_594 的回复:]
引用 5 楼 isjoe 的回复:
C# code

private string Google_T(string texts, string languages)
{
string payload = "&amp;text=" + texts + "&amp;langpair=" + languages;
WebRequest req = HttpWebRe……

……
[/Quote]

给你材料了,你自己处理一下吧。。。。。结果有了,处理还难吗?
77413036 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 isjoe 的回复:]
C# code

private string Google_T(string texts, string languages)
{
string payload = "&text=" + texts + "&langpair=" + languages;
WebRequest req = HttpWebRe……
[/Quote]

我怎么返回的是一个HTML页面。。难道还要截取?
77413036 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 isjoe 的回复:]
Json有{}标记。。。。。。
[/Quote]

我也这么看,json 应该是 {["a":1]}
这样子的。。GOOGLE真纠结。
isjoe 2011-05-27
  • 打赏
  • 举报
回复
Json有{}标记。。。。。。
isjoe 2011-05-26
  • 打赏
  • 举报
回复

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
liujianchun123 2011-05-26
  • 打赏
  • 举报
回复
我也想知道
77413036 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 porschev 的回复:]
长度限制还可以。。

5000字符。。。。一般都够用吧。。
[/Quote]

我们用来翻译文章的。5000字,怕偶尔不够用。
porschev 2011-05-26
  • 打赏
  • 举报
回复

长度限制还可以。。

5000字符。。。。一般都够用吧。。
77413036 2011-05-26
  • 打赏
  • 举报
回复
求助这个的不少啊。没一个完整的解决方案

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧