url解码字符串从ASP到ASP.Net(国际字符)

本文关键字:ASP 字符 解码 字符串 url Net | 更新日期: 2023-09-27 18:07:49

我有一个字符串来自一个ASP页面,我试图URL解码它,并在一个ASP中显示它。网络页面。

string str = @"%A0%A01stk.+%D8repynt+%3Cbr%3E%A0%A01stk.+Slipsn%E5l+%3Cbr%3E%3Cp%3E+Total+pris%3A+300";

如果您查看%D8,则在运行HttpUtility.UrlDecode时应将其翻译为挪威字符Ø。但事实并非如此。根据我尝试的转换,它变成了不同的东西,但从来没有Ø%E5改为å

这是我一直在尝试的一些转换代码:

public static string Convert(string text)
{
    text = HttpUtility.UrlDecode(text);
    var isoEncoder = System.Text.Encoding.GetEncoding("ISO-8859-1");
    var utf8Encoder = new UTF8Encoding();
    byte[] txtBytes = isoEncoder.GetBytes(text);
    byte[] convertedBytes = System.Text.Encoding.Convert(isoEncoder, System.Text.Encoding.UTF8, txtBytes);
    return utf8Encoder.GetString(convertedBytes);
}

根据维基百科的文章Ø:
在Microsoft Windows上,使用"美国-国际"键盘设置时,按住Alt-Gr键并按"L"键即可输入。它也可以在任何键盘设置下输入,只要系统使用代码页1252作为系统默认值,在数字键盘上键入0216或0248的同时按住[Alt]键。(代码页1252是ISO 8859-1的超集,216和248是十六进制D8和F8的十进制等价。)

这似乎表明输入字符串的格式是正确的(%D8 = Ø)。

url解码字符串从ASP到ASP.Net(国际字符)

        string str = @"%A0%A01stk.+%D8repynt+%3Cbr%3E%A0%A01stk.+Slipsn%E5l+%3Cbr%3E%3Cp%3E+Total+pris%3A+300";
        string decoded = System.Web.HttpUtility.UrlDecode(str, System.Text.Encoding.GetEncoding("ISO-8859-1"))