【问题标题】:What are all the special characters in Uri?Uri 中的所有特殊字符是什么?
【发布时间】:2017-01-09 21:38:21
【问题描述】:

我有以下代码:

string myString = "test://mytest/v1.0~admin#1~password";
var myUri = new Uri(myString);

我发现# 之后的部分不在myUri.LocalPath 中。

我尝试用'或&替换hash(#),没有问题。我在哪里可以知道 # 这样的所有特殊字符会在 Uri 中导致同样的问题?

【问题讨论】:

  • # 之后的部分不应该 成为LocalPath 的一部分...# 字符分隔 URI 的片段部分。
  • 我发现下面的代码可以将 # 保留在 uri 中: myString = myString.Replace("#", Uri.HexEscape('#'));我在这里找到它:social.msdn.microsoft.com/Forums/vstudio/en-US/… C# 中是否有一个通用方法可以为我对整个字符串进行这种转换?如果有更多特殊字符,而不仅仅是“#”

标签: c# encoding uri special-characters


【解决方案1】:

哈希“#”仅对客户端可用,不会发送到服务器。它可以从 JS 访问以进行客户端导航(即单页应用程序)。与号用作在问号之后传递给 GET 请求的值的分隔符。例如:http://example.com/controller/action?a=1&b=2&c=3#client-only 将 a、b 和 c 中的整数值传递给服务器,在那里它们将被解析为方法参数。 '#' 之后的部分被服务器忽略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-11
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2012-11-06
    • 2015-05-18
    • 2019-07-04
    相关资源
    最近更新 更多