Usually to avoid this type of problem, people proactively create slugs/permalinks for their entries. It gets around the first issue you are facing, but also gets around the issue of insuring that there aren't multiple posts with the same title. If that were to happen, you have to realize that one of the posts would essentially be orphaned because you would not have a way of getting to it through the system. Sometimes people will just append a number at the beginning or end of the slug that insures it will be unique. An easy way to do it is to prepend the internal ID number for the item.
Our forum software is an example: https://forums.phpfr...o-friendly-url/
As you can see, it has the advantage of correctly handling a situation where the actual title (as in your case) actually includes reference to a url parameter. Any rule would be confused by that, if you just blindly url decode or do a search/replace looking for url encoded spaces.
Or another way to do it is to use a seperate ID parameter. This is what Stackoverflow does, for example: http://stackoverflow...sses-using-jaxb
My advice is to use one of these schemes which are tried and true, and at that point, your rewrite is simpler and more robust because you are controlling your url's rather than trying to deal with all the things people could put into a title and having to deal with the using spaces, url parameter characters or even dashes, which would become an issue. You are retrieving articles by the slug/permalink rather than the title. There are very few drawbacks other than what to do if people want to edit the title of an existing article. In many cases it is best not to change the slugline after article creation, within a small window in case your site has been crawled by a search engine. You don't want to risk losing a search engine placement with an editted post, because you found a small typo and fixed it.