In URIs, and by extension HTTP URLs, some characters have explicit meaning built-in, and others have meaning when you want them to:
The chief incentive to define constraints like this is to maximize the semantic value of your Web asset's URIs in the wild. You will be able to give hints at a glance that would otherwise be missing — or worse — misleading. Here are some examples:
http://news.example.com/money/$5.2-billion-merger
Here, the dollar sign and the period denote the proper currency and value of the transaction, a figure which would otherwise be lost. The period . has been repurposed from its original, mundane duty to serve as the decimal.
http://blog.example.com/wutchoo-talkin'-bout-willis!?
In this example, the apostrophe denotes the verbal contraction, and the punctuation adds emphasis. Note that the question mark ? is placed at the end of the path, denoting an empty query string, which can safely be ignored by the application.
https://spam.example.com/viagra-only-$2-per-pill*
In this example, the dollar sign denotes the price of the product, and the asterisk implies that there is a catch, potentially contained within the document to which this URI refers.
Another important aspect of knowing about these characters is choosing consistent constraints for path and query string parameters.
Of course, treading off the beaten path in this way is not without its risks: