On 13 Jul 2009, at 15:33, Paul Makepeace wrote:
Summary: this turns out to be an issue with Catalyst::Engine::HTTP's
Remote handle not being set to UTF-8.
Setting the remote handle to utf8 makes perl automagically encode
everything from a utf8 character string into a byte string (for you).
This isn't the engine's job.
It's the rendering pipeline's job to ensure that you have a document
whos body is a string of bytes (rather than perl's internal characters).
Catalyst::Plugin::Unicode does this for you by calling uft8::encode
(the perl internal character string is encoded into a byte string (in
utf8)).
my $error = "It\x{2019}s crazy";
my $template = \'[% foo %]'; # or 'path/to/template';
my $output = $view->render($c, $template, {foo => $error});
binmode(*STDOUT, ':utf8');
print "Output: $output\n";
__END__
It turns out that it's not the rendering in TT at all(!) as evidenced
by this test script working.
**
So I can now produce this hard crash by replacing
MyApp::View::TT::render with sub render { "\x{2639}" }. Digging even
further back I found this has it work,
I can't see a crash at all here, that's shitty :/.
Cheers
t0m
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/