[Catalyst] More unicode problems (uri_for)
Knut-Olav Hoven
hovenko at linpro.no
Mon Dec 24 13:58:34 GMT 2007
On Monday 24 December 2007 11:06:20 Oleg Pronin wrote:
> It seems your problem is that your string "Check my å" is not in perl's
> internal format (uri_for expects it). Just UTF-8 octets.
> Always use utf-8 flagged strings inside your application.
>
> for example, this should work:
>
> The following code:
> $c->redirect(
> $c->uri_for(
> '/login',
> {error_msg => Encode::decode_utf8("Check my å")}
> );
> );
>
> Use 'use utf8' pragma in the module for perl to automatically convert
> literals to utf8 strings.
>
> But using such a literals in the source code is very very bad. Better place
> it somewhere in TT or configs.
I wasn't very clear on this, sorry.
"Check my å" is not inside the code, it comes from my "po/mo"-files (i18n).
It looks actually more like this:
$c->redirect(
$c->uri_for(
'/login',
{error_msg => $c->loc("Check my magic")}
);
);
po-file (utf8 encoded):
msgid "Check my magic"
msgstr "Check my å"
>
> 2007/12/21, Knut-Olav Hoven <hovenko at linpro.no>:
> > The solution to my last problem (attached) brought up a new problem
> > regarding
> > UTF-8.
> >
> > = Problem =
> >
> > The following code:
> > $c->redirect(
> > $c::uri_for(
> > '/login',
> > {error_msg => "Check my å"}
> > );
> > );
> >
> > Gives me this URL in my browser:
> > http://localhost:3000/login?error_msg=Check+my+%C3%83%C2%A5
> >
> > Which prints this on my webpage:
> > Check my å
> >
> > The content type of the webpage is UTF-8.
> >
> >
> > = Possible solution =
> >
> > Remove line 967 from Catalyst.pm (v5.7011):
> > (map {
> > $_ = "$_";
> > # THIS ONE utf8::encode( $_ );
> > # using the URI::Escape pattern here so utf8 chars survive
> > s/([^A-Za-z0-9\-_.!~*'() ])/$URI::Escape::escapes{$1}/go;
> > s/ /+/g;
> > "${key}=$_"; } ( ref $val eq 'ARRAY' ? @$val : $val ));
> >
> >
> > = Questions =
> >
> > - It works as a solution to me, does it break anything for others?
> > - Why is that line there at all?
> > - Shouldn't URI::Escape be enough?
> >
> >
> >
> > --
> > Knut-Olav Hoven
> > Systemutvikler mob: +47 986 71 700
> > Linpro AS http://www.linpro.no/
> >
> >
> > ---------- Пересланное письмо ----------
> > From: Knut-Olav Hoven <hovenko at linpro.no>
> > To: The elegant MVC web framework <catalyst at lists.scsys.co.uk>
> > Date: Fri, 21 Dec 2007 17:43:28 +0100
> > Subject: [Catalyst] Problem with Catalyst::Plugin::I18N using UTF-8
> > There are some problems when translating with Catalyst::Plugin::I18N
> > using special unicode characters like "æøå".
> >
> > It got printed (both in console/debugging) and in web browser) as
> > unprintable
> > characters (displayed as "?"). Manually changing encoding in Firefox to
> > ISO-8859-1 made it look right, but the rest of the page is using UTF-8,
> > so this was a no-go solution for me.
> >
> > The solution I found to this was to change line 65 of
> > Catalyst/Plugin/I18N.pm
> > (version 0.06), changed the Decode attribute given
> > to "Locale::Maketext::Simple" from 1 to 0.
> >
> > Any particular reason why Decode was 1?
> >
> > If Decode=>1 is needed for somebody, this should definitely be a
> > configurable
> > option.
> >
> >
> > Patch attached
> >
> > --
> > Knut-Olav Hoven
> > Systemutvikler mob: +47 986 71 700
> > Linpro AS http://www.linpro.no/
> >
> > _______________________________________________
> > 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.rawmode.org/
> > 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.rawmode.org/
> > Dev site: http://dev.catalyst.perl.org/
--
Knut-Olav Hoven
Systemutvikler mob: +47 986 71 700
Linpro AS http://www.linpro.no/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://lists.scsys.co.uk/pipermail/catalyst/attachments/20071224/0dae2dfc/attachment.pgp
More information about the Catalyst
mailing list