I can confirm that it's happening before the data's gone to the database or anything.
I'm getting the params from CGI.pm and then decoding via decode("utf8", $v) The page the params came from is set as utf-8 in the http header and content type and firefox is believing the page is utf-8. It looks as though the browser isn't sending the data as UTF-8 unless it contains text that has to be. As soon as I add a € or some other character that's utf-8 it comes through fine. Checking the params before it's decoded showed the £ as I expected to see it after if had been decoded leading me to think the form hasn't been passed as utf-8 . Any clues..... anyone? On 5/18/05, angie ahl <[EMAIL PROTECTED]> wrote: > Hi List > > I've been pottering away trying to get utf-8 behaving on my set up and > have nearly got there but then the client phoned up saying that the £ > symbol was being displayed as a ? > > The first page contains several languages and a £ sign and all is > displayed fine. > > http://perl.wtsbroadcast.com/about/Angies_test_page.html > > The second is the same as the first but without all the extra language > stuff. There the £ displays as a ?. > > http://perl.wtsbroadcast.com/about/Angies_second_test_page.html > > Very wierd. Same code generated both pages. To explain the whole set > up would take a *long* time but I wondered if anyone else had seen > this? > > $v = $q->url_param('fieldname'); > > my $decoder = Encode::Guess->guess($v); > ref($decoder) or warn "Can't guess for $v: $decoder"; # trap error > this way > if (ref($decoder)) { > my $utf8 = $decoder->decode($v) ? $decoder->decode($v) : $v; > $params{$uarg} = $utf8; > } > else { > $params{$uarg} = decode("utf8", $v) ? decode("utf8", $v) : $v; > } > > I just can't fathom this. > > MP1/Apache 1 on fedora core 2. >