In IO::Handle§

See primary documentation in context for method encoding.

multimethodencoding(IO::Handle:D: --> Str:D) multimethodencoding(IO::Handle:D: $enc--> Str:D)

Returns a Str representing the encoding currently used by the handle, defaulting to "utf8". Nil indicates the filehandle is currently in binary mode. Specifying an optional positional $enc argument switches the encoding used by the handle; specify Nil as encoding to put the handle into binary mode.

The accepted values for encoding are case-insensitive. The available encodings vary by implementation and backend. On Rakudo MoarVM the following are supported:

 utf8 utf16 utf16le utf16be utf8-c8 iso-8859-1 windows-1251 windows-1252 windows-932 ascii 

The default encoding is utf8, which undergoes normalization into Unicode NFC (normalization form canonical). In some cases you may want to ensure no normalization is done; for this you can use utf8-c8. Before using utf8-c8 please read Unicode: Filehandles and I/O for more information on utf8-c8 and NFC.

As of Rakudo 2018.04 windows-932 is also supported which is a variant of ShiftJIS.

Implementation may choose to also provide support for aliases, e.g. Rakudo allows aliases latin-1 for iso-8859-1 encoding and dashed utf versions: utf-8 and utf-16.

In IO::CatHandle§

See primary documentation in context for method encoding.

multimethodencoding(IO::CatHandle:D:) multimethodencoding(IO::CatHandle:D: $new-encoding)

Sets the invocant's $.encoding attribute to the provided value. Valid values are the same as those accepted by IO::Handle.encoding (use value Nil to switch to binary mode). All source handles, including the active one will use the provided $.encoding value.

(my$f1='foo'.IO).spurt: 'I ♥ Raku'; (my$f2='bar'.IO).spurt: 'meow'; withIO::CatHandle.new: $f1,$f2 { # .encoding is 'utf8' by default:  .readchars(5).say; # OUTPUT: «I ♥ R␤»  .encoding: Nil; # switch to binary mode  .slurp.say; # OUTPUT: «Buf[uint8]:0x<6B 75 6D 65 6F 77>␤» } 
close