in reply to Re: Malformed UTF-8 character
in thread Malformed UTF-8 character

Thanks for this. Do I have the use statements right?

use utf8; use Encode; binmode STDOUT, ":utf8"; use open ':encoding(utf8)';

I'm not sure quite what they do or what the difference is. I understand that use utf8 is to save the code page in utf-8, that use Encode is to provide a utility to encode and decode, but I'm not sure what binmode STDOUT, ":utf8";or use open ':encoding(utf8)'; do?

Regards

Steve

Replies are listed 'Best First'.
Re^3: Malformed UTF-8 character
by Eliya (Vicar) on Apr 30, 2011 at 13:45 UTC
    I understand that use utf8 is to save the code page in utf-8

    Not really sure what you mean by that... but use utf8 tells Perl that the source code (string literals, etc.) is encoded in UTF-8. So you shouldn't use it if that's not the case for your script.

    binmode STDOUT, ":utf8" sets the utf8 PerlIO layer for STDOUT, which tells Perl that you want UTF-8 encoded output for that file handle.

    use open ':encoding(utf8)' declares the default layer for I/O streams, i.e. you don't have to explicitly specify the respective layer when you open a file.  See the open pragma for the details.

      Thanks for this.

      Regards

      Steve