我有以下代码片段,我在其中下载了一个html页面。
我已经尝试了几种变体,在下载字符串之后也设置了 UTF8 编码。我做错了什么?
using (WebClient webClient = new WebClient())
{
webClient.Encoding = Encoding.UTF8;
var page = webClient.DownloadString("http://replacementurl.com");
}
您需要检查代码页
根据文档 编码 允许您设置代码页。 但对我来说,这又回来了,例外。
这对我有用:
Encoding enc = new UTF8Encoding(true, true);
string value = "u00C6 u00D8 u00C0 u00C1 u00C2";
try
{
byte[] bytes = enc.GetBytes(value);
foreach (var byt in bytes)
Debug.Write(String.Format("{0:X2} ", byt));
Debug.WriteLine("");
string value2 = enc.GetString(bytes);
Debug.WriteLine(value2);
}
catch (EncoderFallbackException e)
{
Debug.WriteLine("Unable to encode {0} at index {1}",
e.IsUnknownSurrogate() ?
String.Format("U+{0:X4} U+{1:X4}",
Convert.ToUInt16(e.CharUnknownHigh),
Convert.ToUInt16(e.CharUnknownLow)) :
String.Format("U+{0:X4}",
Convert.ToUInt16(e.CharUnknown)),
e.Index);
}
似乎无法分配代码页。 奇怪。