Jon,
Thanx for the fast and wonderful answer.
Unfortunately, I never created any CPAN module, so yet the plugin will be
circulated in mailing-list only...
IMHO, because every component is compiled into perl source code, the "use
utf8;" is needed to add into every component, so:
package Mason::Plugin::UTF8::Compilation;
use Mason::PluginRole;
override 'output_class_header' => sub {
return(super() . 'use utf8;');
};
1;
jm
On 26.7.2011, at 23:43, Jonathan Swartz wrote:
> Hi Jozef,
>
> I'd like Mason to handle encoding intelligently, but since I don't regularly
> work with utf8, you and others will have to help me with the design.
>
> This should probably be in a plugin, e.g. Mason::Plugin::UTF8.
>
> Some have already thought about this on stackoverflow:
>
> http://stackoverflow.com/questions/5858596/how-to-make-mason2-utf8-clean
>
> So for the things you particularly mention, something like this might work:
>
> package Mason::Plugin::UTF8;
> use Moose;
> with 'Mason::Plugin';
> 1;
>
> package Mason::Plugin::UTF8::Request;
> use Mason::PluginRole;
> use Encode;
>
> # Encode all output in utf8 - ** only works with Mason 2.13 and beyond **
> #
> after 'process_output' => sub {
> my ($self, $outref) = @_;
> $$outref = encode_utf8( $$outref );
> };
>
> # Decode all parameters as utf8
> #
> around 'run' => sub {
> my $orig = shift;
> my $self = shift;
>
> my %params = @_;
> while (my ($key, $value) = each(%params)) {
> $value = decode_utf8($value);
> }
> $self->$orig(%params);
> }
>
> 1;
>
> It would probably be best if you or someone else knowledgable about utf8
> issues created this plugin rather than myself. But let me know if there are
> things needed in the Mason core to make this easier.
>
> Jon
>
>
> On Jul 26, 2011, at 3:51 AM, Jozef Mojzis wrote:
>
>> Hi Jon,
>>
>> Please, can you post some guidelines, how to correctly use Mason2 in the
>> utf8 environment?
>>
>> PSGI (plackup) want bytes, therefore even with the next simple component -
>> /index.mc:
>>
>> <%init>
>> use utf8;
>> my $name = "ödön";
>> </%init>
>> Hello <% uc($name) %>
>>
>> plackup throw error with the message:
>>> Body must be bytes and should not contain wide characters (UTF-8 strings)
>>
>> What is correct way deal with this issue? (so, where to do
>> Encode::{de|en}code_utf8?)
>>
>> Especially:
>> 1. components output with utf8
>> 2. handling utf8 GET/POST arguments...
>>
>> Thank you for help.
>> jm
>
------------------------------------------------------------------------------
Got Input? Slashdot Needs You.
Take our quick survey online. Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Mason-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mason-users