"&lang" misinterpreted in URL
anchor, browser, html, javascript, php
Solution
In HTML, the `&` character represents the start of a character reference.
If you try to specify an invalid character reference, then browsers will perform error recovery and treat it as an ampersand instead.
From the HTML DTD:
<!ENTITY lang CDATA "〈" -- left-pointing angle bracket = bra,
U+2329 ISOtech -->
… so `&lang` is not an invalid character reference.
To include an ampersand character as data, use the character reference for an ampersand: `&`
Problem
I am developing for javascript disabled phones. My code looks like this ``` <a href="someurl?var=a&lang=english">Link 1</a> <a href="someurl?lang=english&var=a">Link 2</a> ``` But the browser interprets the URL as - ``` someurl?var=a%e2%8c%a9=english (Link 1, incorrect) someurl?lang=english&var=a (Link 2 works just fine !) ``` It seems like `&lang=english` is being converted to `a%e2%8c%a9=english` Could someone explain why this is happening?