Thanks for the insight… I have managed to work round this issue although it involved changing a lot of code.
I spent a lot of time searching the net to determine the cause of this functionality and as far as I can see, this is a bug in IE. See the below quote for clarification:
Consume the maximum number of characters possible, with the consumed
characters matching one of the identifiers in the first column of the
named character references table (in a case-sensitive manner).
If no match can be made, then no characters are consumed, and nothing is
returned. In this case, if the characters after the U+0026 AMPERSAND
character (&) consist of a sequence of one or more characters in the
range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), U+0061 LATIN SMALL
LETTER A to U+007A LATIN SMALL LETTER Z, and U+0041 LATIN CAPITAL LETTER
A to U+005A LATIN CAPITAL LETTER Z, followed by a U+003B SEMICOLON
character (;), then this is a parse error.
If the character reference is being consumed as part of an attribute,
and the last character matched is not a U+003B SEMICOLON character (;),
and the next character is either a U+003D EQUALS SIGN character (=) or
in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), U+0041
LATIN CAPITAL LETTER A to U+005A LATIN CAPITAL LETTER Z, or U+0061 LATIN
SMALL LETTER A to U+007A LATIN SMALL LETTER Z, then, for historical
reasons, all the characters that were matched after the U+0026 AMPERSAND
character (&) must be unconsumed, and nothing is returned.
Otherwise, a character reference is parsed. If the last character
matched is not a U+003B SEMICOLON character (;), there is a parse error.
Return one or two character tokens for the character(s) corresponding to
the character reference name (as given by the second column of the named
character references table).
If the markup contains (not in an attribute) the string I'm ¬it; I
tell you, the character reference is parsed as "not", as in, I'm ¬it; I
tell you (and this is a parse error). But if the markup was I'm ∉
I tell you, the character reference would be parsed as "notin;",
resulting in I'm ∉ I tell you (and no parse error).
I tried this. The amazing thing is that it doesnt decode it. It seems like IE is treating a '’ like a ‘;’. Therefore, ¬ will be substituted, but ¬xyz will not be. The only option would be to use &_not, but that then becomes ¬… not ¬
My fix was to dynamically build a form and submit it.
Any url strings should be properly encoded, and the encodeURI function is a useful way to ensure that this occurs.
When I was doing a cookie script, and was looking at others, I noticed some of them encoded the paths and some didn’t. If I use encodeURI, does that necessitate decode later in the code? My script worked without decoding, but I did not know if that was just dumb luck or not.