在asp.net 4.0中解码 - 特殊字符

时间:2013-04-23 07:37:39

标签: c# asp.net c#-4.0

按照W3C标准解码asp.net中的特殊字符。 ASCII - URL编码图表。一些特殊字符没有被转换而是转换为“?”,检查下面的问题,%92 ASCII的实际结果是“`”,我正在尝试实现这个以解码为urlencoding相等的字符。

strurl="Workers%92+Accommodation";
string strdecode=Server.UrlDecode(strurl);

例如:ASCII码%92(根据W3C标准,url编码用于' - 键盘中没有引用http://www.w3schools.com/TAGS/ref_urlencode.asp)。

2 个答案:

答案 0 :(得分:4)

尝试编码/解码:

public static string EncodeString(string decodedString)
{
    return Convert.ToBase64String(Encoding.UTF8.GetBytes(decodedString));
}

public static string DecodeString(string encodedString)
{
    return Encoding.UTF8.GetString(Convert.FromBase64String(encodedString));
}

编辑添加: 当您要通过URL传输值时,要使用的方法是:HttpServerUtility.UrlTokenEncode()方法

参考: http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.urltokenencode.aspx

答案 1 :(得分:2)

您必须使用适当的编码代码页进行解码。引自http://www.ascii-code.com

  

8位ASCII表有几种不同的变体。下表符合ISO 8859-1,也称为ISO Latin-1 ....

根据http://en.wikipedia.org/wiki/Windows_code_page,ISO Latin-1的代码页为1252。要解码字符串,只需执行以下操作:

strurl = Encoding.GetEncoding(1252).
             GetString(HttpUtility.UrlDecodeToBytes("%92"));