Perl6:IO::Path中的'dir'是否总是以正确的方式解码文件名?

Perl6:IO::Path中的'dir'是否总是以正确的方式解码文件名?,io,raku,Io,Raku,功能dirfrom是否以正确的方式自动解码文件名,或者是否有可能设置编码 在Perl5中,我主要按照建议对输入进行解码,并对输出进行编码 例如,在Perl5中,如果操作系统用于写入文件名的编码与控制台输出的编码不同,我会这样写 use Encode::Locale; use Encode qw(decode); binmode STDOUT, ':encoding(console_out)'; my @files; while ( my $file = readdir $dh ) {

功能
dir
from是否以正确的方式自动解码文件名,或者是否有可能设置编码


在Perl5中,我主要按照建议对输入进行解码,并对输出进行编码

例如,在Perl5中,如果操作系统用于写入文件名的编码与控制台输出的编码不同,我会这样写

use Encode::Locale;
use Encode qw(decode);
binmode STDOUT, ':encoding(console_out)';

my @files;
while ( my $file = readdir $dh ) {
    push @files, decode( 'locale_fs', $file );
}
for my $file ( @files ) {
     print "$file\n";
}

在Perl6中,我不知道应该做什么。

Perl6在内部使用Unicode字符串(在基于图形的表示中),编码在IO边界处进行

对于控制台输出,您可以通过
$*OUT.encoding(“…”)
手动设置编码


对于目录列表,它取决于后端:对于JVM,它应该做正确的事情(或者像Java那样失败)。对于MoarVM,它将取决于平台:在Win32上,使用Unicode API(这同样应该做正确的事情),而在其他平台上。从该片段中可以看出,原则上使用不同编码的能力存在于最低级别,但它似乎不会以任何方式向用户公开……

您能否分享一些代码,演示您正在做什么以及您希望它如何表现,并指出您对“编码”的担忧?如果没有一些代码,这看起来更像是一个问题。即使在那里,一些代码也不会有什么坏处。@ChristopherBottoms:我已经扩展了这个问题。在win32上,使用unicode winapi函数,在非windows上,假定使用utf8(cf);从这段代码中可以看出,设置不同编码的能力原则上存在于最低级别,但似乎不会以任何方式向用户公开…@Christoph:你能在回答中给出你的评论吗?