"&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 "&#9001;" -- 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: `&amp;`

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?

Original source