C# 将HttpContext中的特殊字符转换为字符串

C# 将HttpContext中的特殊字符转换为字符串,c#,asp.net,C#,Asp.net,我在Web服务中有以下代码来读取post数据。这里的问题是,每当请求包含特殊字符时,比如说“amé”,该字符就会被替换为am� 当转换为字符串时 byte[] postData= HttpContext.Request.BinaryRead(HttpContext.Request.ContentLength); string strReq = Encoding.UTF8.GetString(postData); 我用下面的代码调用WebService: WebClient webClien

我在Web服务中有以下代码来读取post数据。这里的问题是,每当请求包含特殊字符时,比如说“amé”,该字符就会被替换为am� 当转换为字符串时

 byte[] postData= HttpContext.Request.BinaryRead(HttpContext.Request.ContentLength);
 string strReq = Encoding.UTF8.GetString(postData);
我用下面的代码调用WebService:

WebClient webClient = new WebClient();
webClient.Headers["Content-type"] = "text/xml; charset=utf-8";
webClient.Headers[HttpRequestHeader.Authorization] = credentials;
string output = webClient.UploadString(url, "POST", input);

您需要在web服务中指定post数据是UTF-8编码的,否则将无法将其解码为UTF-8。将
charset=utf-8
添加到
content-type
标题的末尾应该可以做到这一点

e、 g


请注意,JSON和表单编码POST数据的规范需要UTF-8。

Thanx。。我能够用上面的代码对post数据进行解码,除了post数据中的特殊字符(如é)没有在解码的字符串中得到反映是的,ASCII编码的常规拉丁字符在UTF-8中可以很好地解码,所以不能保证。我仔细看了看�, 它是U+FFFD,在发现无效字符时插入的Unicode替换字符。更多信息,请参阅。
'content-type': 'text/xml; charset=utf-8'