URLが有効かどうかを確認する必要のあるC#(.Net Core 1.1)アプリケーションがあります。私はUri.IsWellFormedUriString()を使用していますが、これはかなりうまく動作しますが、以下を疑問視してfalseを返します。 URLは完全に有効であると思われますか?URLが正しい場合、Uri.IsWellFormedUriString()はfalseを返します。
Uri.IsWellFormedUriString("http://www.test.com/search/Le+Venezuela+b%C3%A9n%C3%A9ficie+d%27importantes+ressources+naturelles+%3A+p%C3%A9trole%2C+gaz%2C+mines", UriKind.Absolute)
私はURLが正しくフォーマットされたと言うこれを下回るPHP関数とまったく同じURLを使用:
function filter_var($url, FILTER_VALIDATE_URL)
私はここで何かが足りないのですか?
しかしこれはすべての話ではありません。「http://www.test.com/x%2C」 'も' true'と報告します。 '' http://x.com/%C3%A9x%2C ''は壊れていますが、'%C3'、 '%A9'、' x'や '%2C'を削除すると大丈夫です。よくわかりません。 –
あなたは正しいですし、@ JonSkeetもあります。だから、うまくいかないかどうかをチェックする前にURLをエスケープしないでください。 – Pikoh
@JonSkeetは、2番目の例をunscapして再度エスケープすると、http:// x.com /%C3%A9xとなります正しくエスケープされたuriとみなされるものです – Pikoh