C# 为什么它在消息框上显示问号而不是文本

C# 为什么它在消息框上显示问号而不是文本,c#,.net,httpwebrequest,C#,.net,Httpwebrequest,为什么它在消息框上显示问号而不是文本 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://teamxor.net/vb/tx48/"+ page); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream());

为什么它在消息框上显示问号而不是文本

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://teamxor.net/vb/tx48/"+ page);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

StreamReader sr = new StreamReader(response.GetResponseStream());

string result = sr.ReadToEnd();

Regex r = new Regex("<div>.*?</div>");
MatchCollection mr = r.Matches(result);

foreach (Match m in mr)
{
    MessageBox.Show(m.Value, "Test", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
}      

HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(“http://teamxor.net/vb/tx48/“+页);
HttpWebResponse=(HttpWebResponse)request.GetResponse();
StreamReader sr=新的StreamReader(response.GetResponseStream());
字符串结果=sr.ReadToEnd();
正则表达式r=新正则表达式(“*”);
MatchCollection mr=r.Matches(结果);
foreach(在mr中匹配m)
{
MessageBox.Show(m.Value,“Test”,MessageBoxButtons.OK,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1,MessageBoxOptions.RtlReading);
}      

问题在于使用非默认代码页。您的HTML显示您正在使用代码页1256。你必须告诉.NET,否则它会认为是UTF-8:

StreamReader sr = new StreamReader( response.GetResponseStream()
                                  , Encoding.GetEncoding(1256) // <-- this one
                                  );
StreamReader sr=新的StreamReader(response.GetResponseStream()

,Encoding.GetEncoding(1256)/Web服务器可以以任何他们想要的编码返回响应,尽管他们通常选择与浏览器首选语言匹配的编码

使用的编码作为
内容类型
标题的
字符集
元素返回。在.NET中,可以从属性检索使用的编码。可以使用返回的字符集构造用于读取响应的编码对象:

var charset= response.CharacterSet;
var encoding = Encoding.GetEncoding(charset);
var sr= new StreamReader(response.GetResponseStream(),encoding);
....

听起来像是一个编码问题。你也能展示你的工作吗?检查字体和编码。很明显这是编码问题,但是发布代码会很有帮助。也许这只是意味着系统没有安装该字体。检查调试这些标志实际上是什么,因为这是一个Web响应,OP应该始终检查并使用
字符集
header@PanagiotisKanavos:你指的是HTML头?我想现在已经太晚了。不,我指的是HTTP头。HTML头不会影响实际的数据编码。web服务器会将使用的编码放在
字符集
头中。@PanagiotisKanavos:没有。使用Fiddler,你会看到HTTP头ponse
Content-Type
标题是
Content-Type:text/html;charset=windows-1256