我有一个Web服务方法,它将网络登录(字符串)作为参数。登录是从JavaScript编码的URL,因此DOMAIN \ USERNAME被编码为DOMAIN%5CUSERNAME。当我在字符串上使用HttpUtility.URLDecode时,它会转义反斜杠并给我DOMAIN \\ USERNAME。我试图将它传递给配置文件提供程序(它只需要一个反斜杠)并且什么都没有。
我试图做string.Replace()以及RegEx.Replace(),似乎无法摆脱第二反斜杠。
有谁知道解决这个问题的方法?现在,这只是一个概念证明,因为我不是网络用户名作为参数发布的粉丝;但是,我仍然很想知道解决这个问题的方法。如果我无法从C#中解决这个问题,我是否可以/应该在JavaScript方面使用不同的编码方案?
答案 0 :(得分:8)
它实际上并没有将其变成\\
。这就是它在调试器下的样子。如果你想把它放在代码中,调试器会显示你必须使用的字符串文字。如果你将字符串打印到控制台,你会发现没问题。
using System;
using System.Web;
class Test
{
static void Main()
{
string url = "DOMAIN%5CUSERNAME";
string decoded = HttpUtility.UrlDecode(url);
Console.WriteLine(decoded);
}
}
输出:
DOMAIN\USERNAME