title: Uri.IsWellFormedUriString() strange behavior
body: <p>I have recently been working on a project where I have to check a bunch of URLs for validity. The URLs do not have to actually exist, they just must be plausible. To do this, I intended to use <code>Uri.IsWellFormedUri</code> from the library (avoiding tinkering with regexes).</p>
  
  <p>However, I noticed that some of the URLs where recognized as faulty although they seem to be correct to me. Specifically, the problem seems to come from percent encoded parts of the URL. Below a little program showing an example:</p>
  
  <pre><code>class Program
  {
      static void Main(string[] args)
      {
          string uriBase = "http://example.com/share.html?title=";
          string leftEncoded = "ab%C3%BCde";
          string rightEncoded = "ef%20%C7%20ghij";
  
          Console.WriteLine("Now testing if uri is well formed:");
          Console.WriteLine("Combined URI:    " + Uri.IsWellFormedUriString(uriBase + leftEncoded + rightEncoded, UriKind.RelativeOrAbsolute));
          Console.WriteLine("Only left part:  " + Uri.IsWellFormedUriString(uriBase + leftEncoded, UriKind.RelativeOrAbsolute));
          Console.WriteLine("Only right part: " + Uri.IsWellFormedUriString(uriBase + rightEncoded, UriKind.RelativeOrAbsolute));
  
          Console.ReadLine();
      }
  }
  </code></pre>
  
  <p>This program gives the following output:</p>
  
  <pre><code>Now testing if uri is well formed:
  Combined URI:    False
  Only left part:  True
  Only right part: True
  </code></pre>
  
  <p>Why is the long url not accepted as correct? The "title" part of this string is only a concatenation of parts that are on themselves accepted. For all I know, this URL does work correctly and should therefore be valid.</p>
  
  <p>Any help is greatly appreciated!</p>