C#与JavaScript的encodeURIComponent()有相同之处吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (195)

在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有:AspNetHostingPermissionAspNetHostingPermissionAttribute,和AspNetHostingPermissionLevel

提问于
用户回答回答于

Uri.EscapeDataString或者HttpUtility.UrlEncode是转义意味着成为URL一部分的字符串的正确方法。

以字符串为例"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

只有在用作URL的实际部分时才是正确的(而不是其中一个查询字符串参数的值)

用户回答回答于

HttpUtility.HtmlEncode/ Decode

HttpUtility.UrlEncode/ Decode

System.Web如果在项目中不可用,您可以添加对组件的引用

扫码关注云+社区

领取腾讯云代金券