Re: [Catalyst] utf8 on c-res-write or c-res-print

2014-02-21 Thread Sergey Dmitriev

 Thank you, it works! by using Encode::encode(UTF-8, 'my text' ).


And just for reference, if anyone will use it, HTTP headers should be set
BEFORE calling write_fh.
e.g.
$c-res-header( 'Cache-Control'  = 'public, max-age=600' );
my $fh = $c-res-write_fh; # psgi writer, not filehandle

Otherwise headers will not be set.

HtH, Sergey Dmitriev
*All that is necessary for evil to triumph is for good men to do nothing.
-- Edmund Burke*


2014-02-20 18:53 GMT+04:00 Tomas Doran bobtf...@bobtfish.net:


 On Feb 20, 2014, at 2:19 PM, Dmitry L. dim0...@gmail.com wrote:

 use utf8;

 You shouldn't need this unless you have actual utf8 characters (rather
 than escapes) in your source code.

 my $fh = $c-res-write_fh;
 my $test = \x{41f}\x{440}\x{43e}\x{431}\x{430};
 utf8::encode($test);

 You probably actually want Encode::encode('UTF-8', $test);

 $fh-write($test);
 
  On 20 February 2014 17:45, Sergey Dmitriev sergey.program...@gmail.com
 wrote:
  Hello,
 
  I'm trying to put some utf8 strings as a part of Catalyst response as
  follows:
 

 Right, you can't do that :)

 If you try to use the raw write interfaces you have to send bytes not
 characters (and so need to encode your utf8 character strings).

  $c-res-print ( ... )
  and
  $c-res-write( ... )
 
  line by line.
 
  However it dies with
 
Wide character in syswrite at . IO/Handle.pm line 474
 
  Any ideas how can utf8 be written to response?
 
  E.g. set binmode on output handle. Cannot find how.
  Using Catalyst Runtime 5.90042.
 

 This is not what you want to do.

 The handle is already binary - just you're not writing binary to it,
 you're writing characters (and perl does not know how to translate those
 characters into bytes).

 Cheers
 Tom


 ___
 List: Catalyst@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@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/


Re: [Catalyst] utf8 on c-res-write or c-res-print

2014-02-21 Thread John Napiorkowski





On Friday, February 21, 2014 7:25 AM, Sergey Dmitriev 
sergey.program...@gmail.com wrote:

Thank you, it works! by using Encode::encode(UTF-8, 'my text' ).


And just for reference, if anyone will use it, HTTP headers should be set 
BEFORE calling write_fh.
e.g.
    $c-res-header( 'Cache-Control'  = 'public, max-age=600' ); 
    my $fh = $c-res-write_fh; # psgi writer, not filehandle


Otherwise headers will not be set.


===

Correct, once you call -write_fh OR -write on Response, we must finalize the 
headers. This is because the streaming interface can't stream a HTTP body 
without first sending HTTP headers.  By using -write/_fh you have chosen to 
bypass part of the Catalyst finalization process and talk more directly to the 
requesting client.

In newer versions of catalyst trying to set headers after requesting a write 
handler will generate an error.

--John

===


HtH, Sergey Dmitriev
All that is necessary for evil to triumph is for good men to do nothing. -- 
Edmund Burke



2014-02-20 18:53 GMT+04:00 Tomas Doran bobtf...@bobtfish.net:


On Feb 20, 2014, at 2:19 PM, Dmitry L. dim0...@gmail.com wrote:

    use utf8;

You shouldn’t need this unless you have actual utf8 characters (rather than 
escapes) in your source code.


    my $fh = $c-res-write_fh;
    my $test = \x{41f}\x{440}\x{43e}\x{431}\x{430};
    utf8::encode($test);

You probably actually want Encode::encode(‘UTF-8’, $test);


    $fh-write($test);

 On 20 February 2014 17:45, Sergey Dmitriev sergey.program...@gmail.com 
 wrote:
 Hello,

 I'm trying to put some utf8 strings as a part of Catalyst response as
 follows:


Right, you can’t do that :)

If you try to use the raw write interfaces you have to send bytes not 
characters (and so need to encode your utf8 character strings).


 $c-res-print ( ... )
 and
 $c-res-write( ... )

 line by line.

 However it dies with

   Wide character in syswrite at . IO/Handle.pm line 474

 Any ideas how can utf8 be written to response?

 E.g. set binmode on output handle. Cannot find how.
 Using Catalyst Runtime 5.90042.


This is not what you want to do.

The handle is already binary - just you’re not writing binary to it, you’re 
writing characters (and perl does not know how to translate those characters 
into bytes).

Cheers
Tom



___
List: Catalyst@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@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@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/


[Catalyst] utf8 on c-res-write or c-res-print

2014-02-20 Thread Sergey Dmitriev
Hello,

I'm trying to put some utf8 strings as a part of Catalyst response as
follows:

$c-res-print ( ... )
 and
$c-res-write( ... )

line by line.

However it dies with

   Wide character in syswrite at . IO/Handle.pm line 474

Any ideas how can utf8 be written to response?

E.g. set binmode on output handle. Cannot find how.
Using Catalyst Runtime 5.90042.

Thanks.

HtH, Sergey Dmitriev
*All that is necessary for evil to triumph is for good men to do nothing.
-- Edmund Burke*
___
List: Catalyst@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/


Re: [Catalyst] utf8 on c-res-write or c-res-print

2014-02-20 Thread Dmitry L.
use utf8;
my $fh = $c-res-write_fh;
my $test = \x{41f}\x{440}\x{43e}\x{431}\x{430};
utf8::encode($test);
$fh-write($test);

On 20 February 2014 17:45, Sergey Dmitriev sergey.program...@gmail.com wrote:
 Hello,

 I'm trying to put some utf8 strings as a part of Catalyst response as
 follows:

 $c-res-print ( ... )
  and
 $c-res-write( ... )

 line by line.

 However it dies with

Wide character in syswrite at . IO/Handle.pm line 474

 Any ideas how can utf8 be written to response?

 E.g. set binmode on output handle. Cannot find how.
 Using Catalyst Runtime 5.90042.

 Thanks.

 HtH, Sergey Dmitriev
 All that is necessary for evil to triumph is for good men to do nothing.
 -- Edmund Burke

 ___
 List: Catalyst@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/




-- 
//wbr, Dmitry L.

___
List: Catalyst@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/


Re: [Catalyst] utf8 on c-res-write or c-res-print

2014-02-20 Thread Tomas Doran

On Feb 20, 2014, at 2:19 PM, Dmitry L. dim0...@gmail.com wrote:

use utf8;

You shouldn’t need this unless you have actual utf8 characters (rather than 
escapes) in your source code.

my $fh = $c-res-write_fh;
my $test = \x{41f}\x{440}\x{43e}\x{431}\x{430};
utf8::encode($test);

You probably actually want Encode::encode(‘UTF-8’, $test);

$fh-write($test);
 
 On 20 February 2014 17:45, Sergey Dmitriev sergey.program...@gmail.com 
 wrote:
 Hello,
 
 I'm trying to put some utf8 strings as a part of Catalyst response as
 follows:
 

Right, you can’t do that :)

If you try to use the raw write interfaces you have to send bytes not 
characters (and so need to encode your utf8 character strings).

 $c-res-print ( ... )
 and
 $c-res-write( ... )
 
 line by line.
 
 However it dies with
 
   Wide character in syswrite at . IO/Handle.pm line 474
 
 Any ideas how can utf8 be written to response?
 
 E.g. set binmode on output handle. Cannot find how.
 Using Catalyst Runtime 5.90042.
 

This is not what you want to do.

The handle is already binary - just you’re not writing binary to it, you’re 
writing characters (and perl does not know how to translate those characters 
into bytes).

Cheers
Tom


___
List: Catalyst@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/