c# - Microsoft.JScript.GlobalObject.escape 和 Uri.EscapeUriString 有什么不同

标签 c#

服务从Uri.EscapeUriString和Microsoft.JScript.GlobalObject.escape接收到的字符串是不同的,那么我使用Microsoft.JScript.GlobalObject.escape来处理url就可以了。

C# 中的 Microsoft.JScript.GlobalObject.escape 和 Uri.EscapeUriString 有什么不同?

最佳答案

虽然Uri.EscapeUriString可以在 C# 中开箱即用,它不能像 JavaScript 转义函数那样转换所有字符。

例如,假设原始字符串是:“Some String's/Hello”。

Uri.EscapeUriString("Some String's /Hello")

输出: “一些%20String的%20/你好”

Microsoft.JScript.GlobalObject.escape("Some String's /Hello")

输出: “一些%20String%27s%20/你好”

注意 Uri.EscapeUriString 如何没有转义 ' .

话虽如此,让我们看一个更极端的例子。假设我们有这个字符串 "&/\# , + ( ) $ ~ % .. ' ": * ? < > { }"。让我们看看用这两种方法转义它会给我们带来什么。

Microsoft.JScript.GlobalObject.escape("& / \\ # , + ( ) $ ~ % .. ' \" : * ? < > { }")

输出:“%26%20/%20%5C%20%23%20%2C%20+%20%28%20%29%20%24%20%7E% 20%25%20..%20%27%20%22%20%3A%20*%20%3F%20%3C%20%3E%20%7B%20%7D"

Uri.EscapeUriString("& / \\ # , + ( ) $ ~ % .. ' \" : * ? < > { }")

输出:“&%20/%20%5C%20#%20,%20+%20(%20)%20$%20~%20%25%20.. %20'%20%22%20:%20*%20?%20%3C%20%3E%20%7B%20%7D"

请注意Microsoft.JScript.GlobalObject.escape转义了除 + 之外的所有字符, / , *. ,甚至那些在 uri 中有效的内容。例如?&即使它们在查询字符串中有效,也会进行转义。

因此,这完全取决于您希望转义 URI 的位置和时间以及您要创建/转义的 URI 类型。

关于c# - Microsoft.JScript.GlobalObject.escape 和 Uri.EscapeUriString 有什么不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28038717/

相关文章:

c# - IEnumerable 的验证(字符串集合)

c# - 如何为表达式树传递默认参数?

c# - 在.NET中,是否需要注册DLL?

c# - 如何在 .NET 4 中将程序集设置为 "fully trusted"?

c# - 如何将 Objective-C 静态库绑定(bind)到 Xamarin.iOS?

C# mysqlreader 出现相同连接错误

c# - 将非原始值分配给用户控件属性?

c# - 以编程方式将文件 checkin TFS 获得的数量超出预期

c# - Nhibernate 刷新 IEnumerable

c# - 如何处理 GridColums 和 Rows?