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

时间:2009-03-03 22:18:02

标签: c# javascript encoding

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

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

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

1 个答案:

答案 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