C#URLDecode将%5C转换为\\\\而不是\

Jam*_*ers 0 javascript c# encoding

我有一个Web服务方法,它将网络登录(字符串)作为参数.登录是从JavaScript编码的URL,因此DOMAIN\USERNAME被编码为DOMAIN%5CUSERNAME.当我在字符串上使用HttpUtility.URLDecode时,它会转义反斜杠并给我DOMAIN \\ USERNAME.我试图将它传递给配置文件提供程序(它只需要一个反斜杠)并且什么也没得到.

我试图做string.Replace()以及RegEx.Replace()并且似乎无法摆脱第二个反斜杠.

有谁知道解决这个问题的方法?现在,这只是一个概念证明,因为我不是网络用户名作为参数发布的粉丝; 但是,我仍然很想知道解决这个问题的方法.如果我不能从C#解决这个问题,我可以/应该在JavaScript端使用不同的编码方案吗?

Jon*_*eet 8

它实际上并没有把它变成\\.这就是它在调试器下的样子.如果你想把它放在代码中,调试器会显示你必须使用的字符串文字.如果你将字符串打印到控制台,你会发现它没问题.

using System;
using System.Web;

class Test
{
    static void Main()
    {
        string url = "DOMAIN%5CUSERNAME";
        string decoded = HttpUtility.UrlDecode(url);

        Console.WriteLine(decoded);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

DOMAIN\USERNAME
Run Code Online (Sandbox Code Playgroud)