在JavaScript中:
encodeURIComponent("©?") == "%C2%A9%E2%88%9A"
Run Code Online (Sandbox Code Playgroud)
是否有C#应用程序的等价物?对于我使用的转义HTML字符:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Run Code Online (Sandbox Code Playgroud)
但我不确定如何将匹配转换为JS使用的正确十六进制格式.例如这段代码:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Run Code Online (Sandbox Code Playgroud)
返回" %a9%221a"for "©?"而不是"%C2%A9%E2%88%9A".看起来我需要将字符串拆分为字节或其他东西.
编辑:这是一个Windows应用程序中,唯一可用的项目System.Web有:AspNetHostingPermission,AspNetHostingPermissionAttribute,和AspNetHostingPermissionLevel.
C#与encodeURIComponent相当,在SO和其他地方都有很好的覆盖,但是呢?encodeURI呢?基本上,我想编码无效的URL字符,而不是保留的字符,如/,:等于是
"http://www.example.com/my cool page"
Run Code Online (Sandbox Code Playgroud)
将被编码为
"http://www.example.com/my%20cool%20page"
Run Code Online (Sandbox Code Playgroud)
有没有东西进入.NET这样做?或者是正则表达式我最好的选择?