Looking at the documentation for slurp, it looks as though there's a convenient "enc" option you can use if you're not reading utf8 files. So I thought this would work: my $contents = slurp $file, enc => "utf16"; It's not doing what I expected... Raku acts like there's nothing in $contents. Here's the test code I've been using: # ሀⶀ䷼ꪪⲤⲎ my $unichar_str = "\x[1200]\x[2D80]\x[4DFC]\x[AAAA]\x[2CA4]\x[2C8E]"; my $file = "/home/doom/tmp/stuff_in_utf16.txt"; my $fh = $file.IO.open( :w, :enc("utf16") ); spurt $fh, $unichar_str; # read entire file as utf16 Str my $contents = slurp $file, enc => "utf16"; my $huh = $contents.gist; say "contents: $contents"; # contents: say $contents.elems; # 1Thread Next