Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^2: HTTP::Server::PSGI outputs broken utf-8 strings

by Anonymous Monk
on May 01, 2015 at 08:32 UTC ( [id://1125335]=note: print w/replies, xml ) Need Help??


in reply to Re: HTTP::Server::PSGI outputs broken utf-8 strings
in thread HTTP::Server::PSGI outputs broken utf-8 strings

Slow night, so PSGI, Tutorials: perlunitut: Unicode in Perl
#!/usr/bin/perl -- use strict; use warnings; use HTTP::Server::PSGI; use Encode; my $app = sub { return [ 200, [ 'Content-Type' => 'text/html; charset=UTF-8', ], [ map { Encode::encode( 'UTF-8', $_ ) } ## turn to octets so + Plack::Util doesn't have to qq{<!DOCTYPE html><html lang="en-US"><meta charset="utf- +8"> <title> PSGI is Perl </title><body>}, Encode::decode( 'UTF-8', qq{<h1>I \xe2\x99\xa5 Perl</h1>} ## native "latin1" + string ), ## unicode string qq{<p>I \x{2665} Perl}, ## unicode string '<p>' . ( chr(9829) x 10 ), ## unicode string ], ]; }; my $server = HTTP::Server::PSGI->new( host => "127.0.0.1", port => 9091, timeout => 120, ); $server->run($app); __END__ http://127.0.0.1:9091/

Replies are listed 'Best First'.
Re^3: HTTP::Server::PSGI outputs broken utf-8 strings
by jeffa (Bishop) on May 01, 2015 at 15:14 UTC

    Good work but we can clean that up a bit. If i may ...

    use strict; use warnings; use HTML::Template; use HTTP::Server::PSGI; use Encode; my $tmpl = HTML::Template->new( filehandle => \*DATA ); $tmpl->param( foo => Encode::decode( 'UTF-8', "\xe2\x99\xa5" ), bar => "\x{2665}", baz => chr(9829) x 10, ); my $app = sub { return [ 200, [ 'Content-Type' => 'text/html; charset=UTF-8', ], [ Encode::encode( 'UTF-8', $tmpl->output ) ], ]; }; my $server = HTTP::Server::PSGI->new( host => "127.0.0.1", port => 9091, timeout => 120, ); $server->run($app); __DATA__ <!DOCTYPE html> <html lang="en-US"> <meta charset="utf-8"> <head><title>PSGI is Perl</title></head> <body> <h1>I <tmpl_var foo> Perl</h1> <p>I <tmpl_var bar> Perl</p> <p><tmpl_var baz> Perl</p> </body> </html>

    Just a friendly reminder to keep your data separated from your code. :)

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)
    
      A heart is data? Poor jeffa

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1125335]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (3)
As of 2024-03-29 07:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found