Re: utf8 php howto?
| From: | ceo at l-i-e dot com | Date: | Fri, 19 Dec 2008 15:36:32 +0000 |
| Subject: | Re: utf8 php howto? | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-284838@lists.php.net to get a copy of this message | ||
>> In some circumstances, with "mixed" charsets on a page, and with IE in
>> quirks mode, IE will try to "guess" the charset and get it (very)
>> wrong.
>
> A single page or response can only have one characterset, there is no
> mixing possible.
Allow me to re-explain.
Step 1.
Generate HTTP headers that claim your document is UTF-8.
Step 2.
Generate some really bad HTML
Step 3.
Don't include a DOCTYPE
[At this point, IE is in quirks mode, and assumes your charset in the HTTP headers is meaningless,
because you clearly don't know what you are doing.]
Step 4.
Make the first N-bytes of innerHTML English ASCII, then quote something in non-ASCII in one
language, then something else in another.
IE will attempt to GUESS what charset to use, based on a heuristic evaluation of the bytes of
innerHTML content.
IE being IE, it will guess WRONG, sometimes.
I spent the better part of a week working through this one time.
I had zero control over fixing the Content or validating the HTML or getting a DOCTYPE on it, for
"corporate" reasons far too complex to go into here.
I did have a way to cram in the META HTTP-EQUIV tag, which finally convinced IE that it really
really was UTF-8, despite it being in quirks mode.
I cannot now produce the HTML/URL in question, at least not readily, nor am I sure any more what
version of IE it was, since it was at a job in a bug reporting system I no longer have access to.
You're just going to have to trust me that after I set up the same HTML on my OWN server just
so I could tweak it by hand to go through all the permutations, I am quite convinced that this was a
reproducible and consistent, if wacky, behaviour.
I probably still have that copy of the document around on my own server, somewhere, though where I
have it is a bit of a poser, and I can't access my own server from my current day job, so there
it is.
Dunno why MSIE trusts a META tag more than an HTTP header, but it "fits" the MS mind-set
if you Zen on that enough.
[Be careful not to think on it too much and get sucked in...]