[thelist] UTF-8/FormMail/PHP headaches

Peter Johansson peter at johansson.org
Wed May 22 11:40:01 CDT 2002


Hi all,

I've got a problem with character encoding in combination with a
FormMail-script (coded in PHP). Everything works fine as long as I stick
to ISO-8859-1 as charset, but when I call the script from pages that use
UTF-8 as encoding, special characters (e.g. those special chars with dots
and circles above that we tend to use here in Sweden) end up garbled. The
encoding is set with a meta-tag in case the document is in UTF-8, like so:

<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>

The server hasn't got any special charset configured, so it should deliver
ISO-8859-1 (which is the default if I'm not mistaken) on those pages
which haven't got that meta-tag.

I can understand that the characters are garbled, using different charsets
and all, but how can I make my FormMail-script to cope with both variants
of encoding? I've played around with phpinfo() to see if the encoding is
available in some environment variable, but I haven't find anything of
interest. There's a function utf8_decode() in php that seems to work for
converting the UTF-8 form data to ISO-8859-1 prior to sending the mail,
problem is that it doesn't work all that well on data already in
ISO-8859-1. I guess I need some way to determine what encoding the posted
data is in?

The content-type after the form has been posted to my FormMail-script
always seems to be "application/x-www-form-urlencoded" no matter what I
try. I've looked at the HTML-specs at www.w3.org and even tried to set the
enctype to "application/x-www-form-urlencoded; charset=ISO-8859-1" in an
attempt to make the form-data use a different encoding than the rest of
the page, but no success. I've also tried the "accept-charset" but I
couldn't get that to work either.

Anyone who has a clue on this? I guess I could alter the script somehow
and add a new hidden field that indicate which encoding is used, and then
decide whether to call utf8_decode() on the data, but I don't think that's
a very nice solution. And changing all pages that uses FormMail is out of
the question (well, almost anyway) since there's _alot_ of them.

Regards,
Peter




More information about the thelist mailing list