【发布时间】:2023-04-04 02:25:01
【问题描述】:
这是一个sn-p的代码:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(request.RawUrl);
WebRequest.DefaultWebProxy = null;//Ensure that we will not loop by going again in the proxy
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
string charSet = response.CharacterSet;
Encoding encoding;
if (String.IsNullOrEmpty(charSet))
encoding = Encoding.Default;
else
encoding = Encoding.GetEncoding(charSet);
StreamReader resStream = new StreamReader(response.GetResponseStream(), encoding);
return resStream.ReadToEnd();
问题是如果我测试:http://www.google.fr
所有“é”都没有很好地显示。我尝试将 ASCII 更改为 UTF8,但它仍然显示错误。我已经在浏览器中测试了 html 文件,并且浏览器很好地显示了 html 文本,所以我很确定问题出在我用来下载 html 文件的方法上。
我应该改变什么?
删除了无效的 ImageShack 链接
更新 1:代码和测试文件已更改
【问题讨论】:
-
"é" 应该仍然可以工作,即使是 ASCII。您是在输出到一个文件并确定它不工作,还是在返回的 sb.ToString() 上中断指向并在 Quick Watch 中查看它并确定它失败了?
-
不,尖锐的重音在 ASCII 中永远不会起作用,它只包含最多 127 位的 Unicode。
-
(以防万一有人反对并谈论“扩展 ASCII” - 请参阅 msdn.microsoft.com/en-us/library/…)
-
这里的 zabulus 答案怎么样?看起来简单多了:stackoverflow.com/questions/7634113/…
-
这和 Jon 4 年前回答的差不多 :)