On Fri, 16 Feb 2018 00:56:27 -0800, comdog wrote:
> This little program:
>
> my $fh = open 'test.txt', :w, :enc('utf16');
> put "filehandle is using {$fh.encoding}";
> $fh.put: 'Some text';
>
> Gives this error:
>
> filehandle is using utf16
> write_fhb requires a native array of uint8 or int8
>
> ----
> This is Rakudo Star version 2018.01 built on MoarVM version 2018.01
> implementing Perl 6.c
Looks like MoarVM doesn't fully support utf-16 yet (the exception is from
MVM_io_read_bytes that just throws unless it's handed a 8-bit buf)
Slightly golfed version:
$ ./perl6 -e '"t.t".IO.open(:w :bin).write: utf16.new: 1, 2, 3'
write_fhb requires a native array of uint8 or int8
in block <unit> at -e line 1
$ ./perl6 -e '"t.t".IO.open(:w :bin).write: utf32.new: 1, 2, 3'
write_fhb requires a native array of uint8 or int8
in block <unit> at -e line 1
$ ./perl6 -e '"t.t".IO.open(:w :bin).write: buf32.new: 1, 2, 3'
write_fhb requires a native array of uint8 or int8
in block <unit> at -e line 1
Dies on read too, but with a more useful message:
$ ./perl6 -e '"LICENSE".IO.open(:enc<utf-16>).slurp.say'
Streaming decode NYI for encoding 4
in block <unit> at -e line 1
Works fine on JVM backend.