Unescape JavaScript的escape()使用C#

Mar*_*tin 46 javascript c# asp.net

C#中的任何函数是否像JavaScript一样处理escape/unescape?

我有一个像这样的JSON字符串:

{"Feeds":[{"Url":"www.test.com","FeedType":"Twitter"},{"Url":"www.test2.com","FeedType":"Youtube"}]}

之后看起来像这样 escape()

%7B%22Feeds%22%3A%5B%7B%22Url%22%3A%22www.test.com%22%2C%22FeedType%22%3A%22Twitter%22%7D%2C%7B%22Url%22%3A%22www.test2.com%22%2C%22FeedType%22%3A%22Youtube%22%7D%5D%7D

在我的C#代码中,我想对这个字符串进行转换,使其看起来与之前完全相同 escape()

这可能吗?

Jus*_*ner 67

HttpUtility.UrlDecode 应该做的伎俩.

  • 这不能正确解码瑞典字符 - 被转义为%E5并解码为: (9认同)
  • "+"是URL中的空格字符.由编码器来解决这个问题.在JavaScript中,您希望使用encodeURIComponent而不是escape,它也包含+字符. (3认同)
  • 这不处理'+'字符.(尝试在"abc + def"上使用UrlDecode似乎是用空格替换+.)暂时我正在使用Microsoft.JScript.GlobalObject.unencode()但是我讨厌为此引入一个依赖... (2认同)

Bru*_*oLM 17

escape() 相当于

HttpUtility.UrlDecode(str, System.Text.Encoding.Default);
Run Code Online (Sandbox Code Playgroud)

默认情况下,UrlDecode使用UTF8而不使用UTF8 escape().


Vin*_*ius 11

这是我发现使用这些方法的最佳方法:

用C#编码:

System.Uri.EscapeDataString("<string>");
Run Code Online (Sandbox Code Playgroud)

用JavaScript解码:

decodeURI("<string>");
Run Code Online (Sandbox Code Playgroud)

在JavaScript中编码:

encodeURI("<string>");
Run Code Online (Sandbox Code Playgroud)

用C#解码:

System.Uri.UnescapeDataString("<string>");
Run Code Online (Sandbox Code Playgroud)

更新2016年1月27日:刚刚找到了一个更兼容的方法,它也使用javascript对URI协议(http://)进行编码:

在JavaScript中编码:

encodeURIComponent("<string>");
Run Code Online (Sandbox Code Playgroud)

用JavaScript解码:

decodeURIComponent("<string>");
Run Code Online (Sandbox Code Playgroud)


Awe*_*lis 5

唉,为什么我们有时会过分思考这些东西.当API函数变得愚蠢时,请向库开发人员发送一个karma cuss,然后解决它...

HttpUtility.UrlEncode(editext, System.Text.Encoding.Default).Replace("+","%20");
Run Code Online (Sandbox Code Playgroud)