在JavaScript:

encodeURIComponent("©√") == "%C2%A9%E2%88%9A"

是否有一个相当于C#应用程序?为逃避HTML人物我使用:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"&#" + ((int)m.Value[0]).ToString() + ";");

但我不知道该如何转换的匹配的正确的进制格式,JS使用。例如这个代号:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));

返回"%a9%221a" 对于 "©√" 而不是的 "%C2%A9%E2%88%9A".它看起来像我需要分割的串入字节或者东西。

编辑:这是一windows的应用程序,只有项目提供 System.Web 有: AspNetHostingPermission, AspNetHostingPermissionAttribute, , AspNetHostingPermissionLevel.

有帮助吗?

解决方案

Uri.EscapeDataStringHttpUtility.UrlEncode 是正确的方法来逃脱一串是一部分的一个网址。

举个例子串 "Stack Overflow":

  • HttpUtility.UrlEncode("Stack Overflow") --> "Stack+Overflow"

  • Uri.EscapeUriString("Stack Overflow") --> "Stack%20Overflow"

  • Uri.EscapeDataString("Stack + Overflow") -->还编码 "+" to "%2b" ---->Stack%20%2B%20%20Overflow

只有最后一个是正确的,当被用作一个实际部分的网址(相对于价值之一的查询串的参数)

其他提示

HttpUtility.HtmlEncode /解码
HttpUtility.UrlEncode /解码

你可以添加一个参考 System.Web 大会,如果它不在你的项目

我试图做到全面兼容的模拟javascript的encodeURIComponent c#后我4小时的实验我发现这个

c#码:

string a = "!@#$%^&*()_+ some text here али мамедов баку";
a = System.Web.HttpUtility.UrlEncode(a);
a = a.Replace("+", "%20");

结果是:!%40%23%24%25%5e%26*()_%2b%20some%20text%20here%20%d0%b0%d0%bb%d0%b8%20%d0%bc%d0%b0%d0%bc%d0%b5%d0%b4%d0%be%d0%b2%20%d0%b1%d0%b0%d0%ba%d1%83

之后你解码这Javascript的decodeURLComponent();

你会得到这个:!@#$%^&*()_+ 一些文字在这里али мамедов баку

谢谢你的关注

系统。Uri。EscapeUriString()似乎没有做任何事,但系统。Uri。逃脱数据String()为我工作。

尝试 Server.UrlEncode(), 或 System.Web.HttpUtility.UrlEncode() 为实例,当你没有访问 Server 对象。你也可以使用 System.Uri.EscapeUriString() 为了避免增加一个参考 System.Web 大会。

你可以使用的服务对象在该系统。Web namespace

服务器。UrlEncode、服务器。UrlDecode、服务器。HtmlEncode和服务器。HtmlDecode.

编辑:海报加,这是一个windows的应用并不一网络作为一个人会相信。上面列出的项目将可从HttpUtility类内部系统。网络必须加入作为参考的项目。

Windows存储程序,你不会有HttpUtility.相反,你有:

对于一个URI之前,'?':

  • 系统。Uri。EscapeUriString("example.com/Stack 溢出++?")
    • ->"example.com/Stack%20Overflow++?"

对于一个URI查询名或价值,后经'?':

  • 系统。Uri。EscapeDataString("堆溢出++")
    • ->"堆%20Overflow%2B%2B"

对于一个 x-www-form-urlencoded 查询名或价值,在一章内容:

  • System.Net.WebUtility.UrlEncode("堆溢出++")
    • ->"堆+溢出%2B%2B"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top