我有一個需要檢查URL是否有效的C#(.Net Core 1.1)應用程序。我使用了Uri.IsWellFormedUriString(),它工作得很好,但對下面這個返回false的問題有疑問。在我看來,該網址是完全有效的?Uri.IsWellFormedUriString()對於正確的URL返回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)
我用同樣的網址與PHP函數低於該說的網址格式正確:
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也是。所以也許不是一個壞主意,在檢查網址是否正常形成之前先檢查網址 – Pikoh
@JonSkeet對第二個例子進行隱藏處理並再次轉義給出'http:// x.com /%C3%A9x,',所以我認爲是什麼被認爲是一個正確逃脫uri – Pikoh