得到 ?作为字符 æ,ø,å,é 等的替换,即使在设置 UTF8 编码时也是如此



我有以下代码片段,我在其中下载了一个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);
}

似乎无法分配代码页。 奇怪。

最新更新