[Catalyst] Problems with Encoding support in Catalyst.
Bill Moseley
moseley at hank.org
Sun Jan 8 16:42:43 GMT 2017
On Sat, Jan 7, 2017 at 9:55 PM, Bill Moseley <moseley at hank.org> wrote:
>
> # Let it be set to undef
> if (my $wanted = shift) {
> $encoding = Encode::find_encoding($wanted)
> or Carp::croak( qq/Unknown encoding '$wanted'/ );
> *binmode(STDERR, ':encoding(' . $encoding->name . ')');*
>
>
> The problem with that is it seems to turn off autoflush on STDERR. In my
> case that is causing intermixing of lines in the log files.
>
> If I turn on STDERR->autoflush(1) then the logging works again and log
> lines are not mangled.
>
> But, I'm not sure we should apply a layer to STDERR like that. For
> example, I log to stderr with JSON and that is already encoded.
>
Just in case it isn't clear that is a problem:
use strict;
use warnings;
use Encode;
use JSON;
binmode( STDERR, ':utf8' );
my $json = encode_json( { chars => decode_utf8( '雨下降' ) } );
print STDERR "$json\n";
Results in:
{"chars":"é›¨ä¸‹é™ "}
--
Bill Moseley
moseley at hank.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scsys.co.uk/pipermail/catalyst/attachments/20170108/ebba16a8/attachment.htm>
More information about the Catalyst
mailing list