2013-10-20 205 views
3

我試圖做一個webrequest併發送希伯來文 的發佈數據,但服務器端得到它像「?????」而不是希伯來語。UTF8編碼C#Webrequest

WebRequest request = WebRequest.Create(MyserverClient.Url + Constants.TaskUpdatePropertyURL); 
((HttpWebRequest)request).AllowAutoRedirect = false; 
((HttpWebRequest)request).KeepAlive = true; 

request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded;"; 
request.Headers.Add("Pragma: no-cache"); 
request.Headers.Add(string.Format("Cookie: {0}", Client.phpId)); 
    request.Headers.Add(string.Format("requesttoken: {0}", requestToken)); 

    string postData = "Some Non-english text";  
    using (Stream dataStream = request.GetRequestStream()) 
{ 
    byte[] byteArray = Encoding.UTF8.GetBytes(postData);     
    dataStream.Write(byteArray, 0, byteArray.Length);    
    dataStream.Close(); 
} 

    try{ 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
       // Get the stream containing content returned by the server. 
     Stream dataStream2 = response.GetResponseStream(); 
       // Open the stream using a StreamReader for easy access. 
     StreamReader reader = new StreamReader (dataStream2); 
       // Read the content. 
     responseFromServer = reader.ReadToEnd(); 
    } 
return responseFromServer; 

     } 

就像我說的,對於非英語服務器獲取數據後作爲「???? ??? - ??????? ????」但我應該是「一些非英文文本」 任何建議?

回答

4

嘗試這樣:

StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8); 
-1

也許這將做的工作:在希伯來語 ,

Encoding.GetEncoding(1255) 
+0

這一次似乎沒有正常工作對我來說VS VS 2017 .net4.5 –

0

您可以使用Uri.EscapeDataString(string)