服务从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/