To answer my own question ... after 'process_output' => sub { my ($self, $outref) = @_; $$outref = encode_utf8($$outref) unless $self->{'already_encoded'}; };
before 'send_json' => sub { my $self = shift; $self->{'already_encoded'} = 1; }; That way we're not doing the same work twice. Anyone see any problems with this? On Fri, Aug 15, 2014 at 2:13 PM, James Orr <james.o...@gmail.com> wrote: > Another problem I had is that the $m->send_json method calls > JSON::XS::encode_json, which itself encodes the string as utf8, and this is > then getting double encoded by the after process_output call in the plugin. > > I got around it by over-riding send_json and decoding the json string ... > > around 'send_json' => sub { > my $orig = shift; > my $self = shift; > my $data = shift; > $self->clear_buffer; > my $result = JSON::XS::encode_json($data); > $self->print(decode_utf8(JSON::XS::encode_json($data))); > $self->res->content_type("application/json; charset=utf-8"); > $self->abort(); > }; > > Is there a better way to handle this? > > > On Thu, Aug 14, 2014 at 10:29 AM, James Orr <james.o...@gmail.com> wrote: > >> I had some utf8 issues as well, I used the plugin at the stackoverflow >> link which worked for the most part, except any parameters passed in to a >> page were getting double encoded. >> >> I made this change to the around 'run' in Mason::Plugin::UTF8::Request >> which seems to fix the problem ... >> >> around 'run' => sub { >> my $orig = shift; >> my $self = shift; >> >> my %params = @_; >> while (my($key, $value) = each(%params)) { >> while (my ($k, $v) = each(%$value)) { >> $params{$key}->{$k} = decode_utf8($v); >> } >> } >> $self->$orig(%params); >> }; >> >> On Wed, Aug 13, 2014 at 8:19 AM, Jonathan Swartz <swa...@pobox.com> >> wrote: >> >>> Ladislav - you can find some starting points here — >>> >>> http://stackoverflow.com/questions/5858596/how-to-make-mason2-utf-8-clean >>> >>> https://www.mail-archive.com/mason-users@lists.sourceforge.net/msg03450.html >>> >>> There ought to be a Mason::Plugin::Utf8 that handles this, but I never >>> had the time and it appears no one else did either… :) >>> >>> Best >>> Jon >>> >>> On Aug 13, 2014, at 5:13 AM, Adam Sjøgren <a...@koldfront.dk> wrote: >>> >>> Ladislav Laska <la...@kam.mff.cuni.cz> writes: >>> >>> So my question to the community is: what is the right way to do it? >>> >>> >>> In the old HTML::Mason (1) days, I would put 'use utf8;' in the preamble >>> parameter: >>> >>> * >>> https://metacpan.org/pod/distribution/HTML-Mason/lib/HTML/Mason/Params.pod#preamble >>> >>> >>> I don't know if Mason (2) has changed anything in this regard. >>> >>> >>> Best regards, >>> >>> Adam >>> >>> -- >>> "Repetition is the death of magic." Adam Sjøgren >>> >>> a...@koldfront.dk >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> _______________________________________________ >>> Mason-users mailing list >>> Mason-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/mason-users >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> Mason-users mailing list >>> Mason-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/mason-users >>> >>> >> >
------------------------------------------------------------------------------
_______________________________________________ Mason-users mailing list Mason-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mason-users