[Catalyst] Catalyst Unicode

Christian Lackas christian at lackas.net
Fri Jan 31 11:59:31 GMT 2014


* David Schmidt <davewood at gmx.at> [140131 06:53]:

Dear David,

thanks for your prompt reply.
If I use 'use utf8', I already tell Perl that all literals are in UTF-8,
and thus would not need to decode manually at all (as you see in your
output it already says is_utf8 even before you decode manually).
What I tried to simulate is: I have some text in a variable, and I know
its UTF-8, however, Perl does not, yet, thus I have to decode it.

Please also note the small error I made with not taking the return value
of '$encoding->decode()'.

Christian

-- 
Dr. Christian Lackas, Managing Partner
inviCRO, LLC -- In Imaging Yours
P: +1 617 963 0263, F: +49 2203 9034722, E: lackas at invicro.com
http://www.invicro.com/  http://www.spect-ct.com/

> https://metacpan.org/pod/release/JJNAPIORK/Catalyst-Runtime-5.90053/lib/Catalyst/Upgrading.pod#Catalyst::Plugin::Unicode::Encoding-is-now-core
> 
> 
> and in your test script, im pretty sure if you are using unicode chars
> in your perl code you have to "use utf8" in it.
> 
> also, "use warnings" instead of "perl -w"
> 
> #!/usr/bin/env perl
> use strict;
> use warnings;
> use utf8;
> use Encode;
> my $encoding = Encode::find_encoding("UTF-8");
> warn "Encoding: $encoding\n";
> my $t = "Ümläuts";
> warn "Is utf8: ", Encode::is_utf8($t), " ", utf8::is_utf8($t), "\n";
> $encoding->decode($t);
> # utf8::decode($t);
> warn "Is utf8: ", Encode::is_utf8($t), " ", utf8::is_utf8($t), "\n";
> binmode STDOUT, ':utf8';
> print "T=$t\n";
> 
> 
> david at nio:~$ perl foo.pl
> Encoding: Encode::utf8=HASH(0x1f22390)
> Is utf8: 1 1
> Is utf8:
> T=Ümläuts
> 
> On 31 January 2014 12:29, Christian Lackas <christian at lackas.net> wrote:
> > Hi Everybody,
> >
> > I noticed that paramters in my Catalyst application are not
> > automatically decoded to UTF-8, although I use
> >
> >     use Catalyst qw/
> >         ...
> >         Unicode::Encoding
> >         ...
> >     /;
> >     __PACKAGE__->config(
> >         ...
> >         encoding => 'UTF-8',
> >         ...
> >     );
> >
> > I tracked this down to Catalyst::Plugin::Unicode::Encoding::\
> > _handle_param_unicode_decoding() where I find the line
> >
> >     $enc->decode($value, $CHECK)
> >
> > that does not seem to have the (my) expected outcome.
> >
> > Here is a small test script:
> >
> >     #!perl -w
> >     use strict;
> >     use Encode;
> >     my $encoding = Encode::find_encoding("UTF-8");
> >     warn "Encoding: $encoding\n";
> >     my $t = "Ümläuts";
> >     warn "Is utf8: ", Encode::is_utf8($t), " ", utf8::is_utf8($t), "\n";
> >     $encoding->decode($t);
> >     # utf8::decode($t);
> >     warn "Is utf8: ", Encode::is_utf8($t), " ", utf8::is_utf8($t), "\n";
> >     binmode STDOUT, ':utf8';
> >     print "T=$t\n";
> > ------
> >     $ perl enc.pl
> >     Encoding: Encode::utf8=HASH(0x1994cb8)
> >     Is utf8:
> >     Is utf8:
> >     T=Ümläuts
> >
> > When I replace above '$encoding->decode($t)' with 'utf8::decode($t)'
> > then it works as expected:
> >
> >     $ perl enc.pl
> >     Encoding: Encode::utf8=HASH(0x1e02cb8)
> >     Is utf8:
> >     Is utf8: 1 1
> >     T=Ümläuts
> >
> > What am I doing wrong here? Or do I misunderstand what this code should
> > do? Any hints are highly appreciated. Thanks.
> >
> > Christian
> >
> > --
> > Dr. Christian Lackas, Managing Partner
> > inviCRO, LLC -- In Imaging Yours
> > P: +1 617 963 0263, F: +49 2203 9034722, E: lackas at invicro.com
> > http://www.invicro.com/  http://www.spect-ct.com/
> >
> > _______________________________________________
> > List: Catalyst at lists.scsys.co.uk
> > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> > Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> > Dev site: http://dev.catalyst.perl.org/
> 
> _______________________________________________
> List: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/



More information about the Catalyst mailing list