得到?即使在设置UTF8编码时,也可替换字符æ,ø,å,é等

时间:2018-05-28 21:07:52

标签: c# html webclient

我有以下代码片段,我下载了一个html页面。

我尝试了几种变体,我在downloadstring之后设置了UTF8编码。我做错了什么?

using (WebClient webClient = new WebClient())
{
    webClient.Encoding = Encoding.UTF8;
    var page = webClient.DownloadString("http://replacementurl.com");
}

1 个答案:

答案 0 :(得分:1)

您需要检查code page

根据文档编码,您可以设置code page。但对我来说,那就是回归和异常。

这对我有用:

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);
}

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