C# Web服务与编码

C# Web服务与编码,c#,web-services,encoding,C#,Web Services,Encoding,我按如下方式连接到web服务: HttpWebRequest req = (HttpWebRequest)WebRequest.Create( "http://mywebserviceaddress.com/attributes=someatt"); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; using (StreamReader stIn = new StreamReader

我按如下方式连接到web服务:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(
    "http://mywebserviceaddress.com/attributes=someatt");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";

using (StreamReader stIn = new StreamReader(
       req.GetResponse().GetResponseStream(),Encoding.UTF8))
{
      strResponse = stIn.ReadToEnd();
      return strResponse;
}
但是,我得到了(可能)错误编码的响应,因此,在我的页面上,我得到了以下问题:

我是做错了什么还是第三方web服务问题?没有这些愚蠢的问题,我怎么能得到回应? 以下是调试器的屏幕截图:

页面可能不是UTF8。看起来特殊字符使用ASCII字符的上半部分,所以它是某种旧字符集。将其读取为UTF8会导致错误,因为读取器不需要单字节特殊字符


GetResponse()
的结果存储到变量中,并输出
ContentType
CharacterSet
的内容。如果服务器操作正确,则会在此属性中显示已使用的字符集。然后,您可以在
StreamReader

中使用正确的字符集,页面采用什么编码?您是如何得到响应并将其放在页面上的?我认为这不是页面编码的问题。当我调试代码时,我的strResponse变量在那个阶段的值来自web服务编码错误。在这种情况下听起来很有可能(你真的应该把这些信息添加到问题中)。你确定你正在读的流是UTF8吗?我不确定。如何确保它是UTF8?我在您发布的文本可视化工具图像中没有看到这些问题。它们在吗?我从GetResponse()中得到以下结果。我看到System.Net.HttpWebResponse中的字符集设置为:“ISO-8859-1”。看来问题出在这里。是吗?我知道了,我没看到那栋房子。因此,响应的字符集是ISO-8859-1。使用
Encoding.GetEncoding(“ISO-8859-1”)
而不是Encoding.UTF8。我觉得这很奇怪。我已经按照你的建议更改了编码,但结果如下:“毁掉jednego z najwiêkszych kompleks&;oacute;w pa³acoo ogrodowych staro?ytnoci,gdzie cesarz Hadrian spêdzi³ostatnie lata?ycia。”页面在普通浏览器中的外观如何?在Firefox中,您可以使用上下文菜单>页面信息或类似的方式查看使用过的字符集。它在浏览器中的外观如何?它是正确显示特殊字符,还是显示错误字符?