In IO::CatHandle§
See primary documentation in context for method encoding
multi method encoding(IO::CatHandle:D:) multi method encoding(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'; with IO::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>» }
In IO::Handle§
See primary documentation in context for method encoding
multi method encoding(IO::Handle:D: --> Str:D) multi method encoding(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
.