2012-11-03 28 views
-1

不識別解碼該怎麼辦?中歐語言的UNICODE編碼

var url = "http://translate.google.ru/translate_a/t?client=x&text=" + text + "&hl=en&sl=en&tl=ru"; 

new System.Net.WebClient().DownloadFile(url, "filePath"); 

StreamReader streamReader = new StreamReader("filePath", Encoding.UTF8); 

string trn = streamReader.ReadToEnd(); 
streamReader.Close(); 
return trn; 


Label1.Text = tr.GoogleTranslate("testers"); 

結果:

+0

有不僅僅是UTF-8編碼的多;你還試過了什麼?編碼是否在HTTP頭之一中? –

+0

@Aristod「更好」取決於很多東西 –

回答

1

在這裏,您如何讀取,使用WebRequest

HttpWebResponse response = null; 
StreamReader reader = null; 
Stream dataStream = null; 
StringBuilder sbReadBuffer = null; 
int bufSizeMin = 8192; 
int bufSizeMax = 65536; 

try 
{ 
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(TheWebPageToRead); 

    if (req != null) 
    { 
     req.Method = "GET"; 
     response = (HttpWebResponse)req.GetResponse(); 

     if (response != null) 
     { 
      // Get the stream containing content returned by the server. 
      dataStream = response.GetResponseStream(); 

      // Open the stream using a StreamReader for easy access. 
      reader = new StreamReader(dataStream, true); 

      // get the length of the content returned by the request 
      int length = (int)response.ContentLength; 
      int bufSize = bufSizeMin; 

      if (length > bufSize) 
       bufSize = length > bufSizeMax ? bufSizeMax : length; 

      // allocate buffer and StringBuilder for reading response 
      byte[] buf = new byte[bufSize]; 
      sbReadBuffer = new StringBuilder(bufSize); 

      // read the whole response 
      while ((length = dataStream.Read(buf, 0, buf.Length)) != 0){ 
       sbReadBuffer.Append(Encoding.UTF8.GetString(buf, 0, length)); 
      } 
     } 
    } 
} 
finally 
{ 
    if (response != null) 
     response.Close(); 

    if (reader != null) 
     reader.Close(); 

    if (dataStream != null) 
     dataStream.Close(); 
} 

TheWebPageToRead是你的網址。
sbReadBuffer保持了回報,要求"testers"我得到:

{"sentences":[{"trans":"Тестеры","orig":"testers","translit":"Testery","src_translit":""}],"src":"en","server_time":11}

要求"aristos",我得到:{"sentences":[{"trans":"аристократов","orig":"aristos","translit":"aristokratov","src_translit":""}],"src":"en","server_time":5}

+0

這很好,但應該如何看待return或labl1.text? 因爲我無法獲取數據! – CyberTramp

+1

@Cyber​​Tramp你不投票,不接受,你問更多.... – Aristos