问题
I have read I should encode my ampersands as &
in HTML.
However numerous code samples from respected companies somehow forget to do this.
Just a few examples off the top of my head:
Google Web Fonts sample code:
<link href='http://fonts.googleapis.com/css?family=PT+Sans&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
Google Maps documentation:
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&language=ja">
Twitter Anywhere official tutorial:
<script src="http://platform.twitter.com/anywhere.js?id=YOUR_API_KEY&v=1" type="text/javascript"></script>
Is there any real benefit from not escaping ampersand in links?
Is this related to browser quirks? Is this just a mistake in documentation?
Dear answerers, please make sure you're answering the right question.
I know I should escape ampersands per spec. I also know why the mechanism was invented in the first place. I'm not asking about this. My question is:
Is there a reason API documentation by respectable companies often violates this rule?
回答1:
Is there any real benefit from not escaping ampersand in links?
It saves a few keystrokes.
Is this related to browser quirks?
No
Is this just a mistake in documentation?
Yes
Is there a reason API documentation by respectable companies often violates this rule?
Ignorance and/or laziness. Browsers perform error recovery so they either don't notice the errors or they don't care. The documentation probably isn't written by their best experts.
回答2:
Two different contexts here.
- Within the context of a javascript href, the & is just fine and should not be encoded.
- In an HTML link the & is forbidden and should be escaped.
In the HTML link context an HTML character entity will be decoded before the address is passed to the HTTP process; a URL-encoded character will not, as the server can read it directly.
来源:https://stackoverflow.com/questions/8874706/why-doesnt-twitter-and-google-api-documentation-encode-ampersands-in-urls