On Wed, Nov 4, 2009 at 9:49 PM, Michael Lackhoff <lackh...@zbmed.uni-koeln.de> wrote: > On 04.11.2009 11:24 Cees Hek wrote: > >> Can't you get DBI to do the decoding for you? I think it will depend >> on the DBD module you use, but it is quite easy with PostgeSQL: > > I am using SQLite and it is also quite easy there but then I have -- as > you say -- _decoded_ values. This is what I want within my application > but as soon as I produce some output (let CGI::Application print the > template with embedded DB data) Perl does its evil magic and encodes > everything to latin1 -- at least this is what I get. > > Do you do some magic with STDOUT or how do you get the UTF-8 to the > browser? Whatever I try, Perl always outputs latin1 from decoded strings > and the only remedy I found was to not let it output decoded strings but > encoded UTF-8 octets.
You mean something like this: __PACKAGE__->add_callback('postrun', sub { my $self = shift; # Make sure the output is utf8 encoded if it needs it if ( $_[0] && ${$_[0]} && utf8::is_utf8(${$_[0]}) ){ utf8::encode( ${$_[0]} ); } return; }); I have that in my CGI::App base class. > Sorry for the long thread but this is a horror I encounter over and over > again and I am hoping for a better understanding to get it right once > and for all. Not a problem. Utf8 support is tricky to get right, and I am still not sure if I have tackled everything myself. I'm sure others will get something out of the discussion as well. Cheers, Cees ##### CGI::Application community mailing list ################ ## ## ## To unsubscribe, or change your message delivery options, ## ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## ## ## ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## ## Wiki: http://cgiapp.erlbaum.net/ ## ## ## ################################################################