UTF-8 + HTML::Template + CGI::Fast
Dave Hodgkinson
davehodg at gmail.com
Fri Dec 4 11:06:06 GMT 2009
On 4 Dec 2009, at 10:25, Andrew McGregor wrote:
> Hello,
>
> I'm hoping someone can help me with a UTF-8 problem.
>
> If a user enters latin-1 into a (CGI::Fast) form and submits, and the
> string is displayed (HTML::Template) as expected.
>
> If a user enters UTF-8 chars then the string displayed is corrupt, or
> looks like it has been double encoded.
>
> If I remove CGI::Fast then there is no problem.
>
> If I die $string before hitting HTML::Template then the UTF-8 string
> is displayed properly.
>
> I've patched HTML::Template to allow UTF-8 files. I've tried passing
> in a fh opened as UTF-8 (segfault).
>
> I read somewhere that Perl doesn't cope well concatenating latin-1 and
> UTF-8 strings - could this be happening in HTML::Template?
>
> Or should I be posting somewhere else, HTML::Template list or CGI::Fast list?
>
> This is perl, v5.8.8 built for i386-linux-thread-multi
Consistency is the key. If you know Latin-1 is coming in from the
form, use Encode to convert it to UTF-8 and thus tell perl that's
what it is.
Oh, and "use utf8;" for good measure.
Apparently, a string isn't just a stream of octets :)
At least you don't have MySQL in the loop.
--
Dave Hodgkinson MSN: davehodg at hotmail.com
Site: http://www.davehodgkinson.com UK: +44 7768 490620
Blog: http://www.davehodgkinson.com/blog
Photos: http://www.flickr.com/photos/davehodg
More information about the london.pm
mailing list