io - Perl6:来自 IO::Path 的 `dir` 是否总是以正确的方式解码文件名?

标签 io raku

函数 dir 来自 IO::Path以正确的方式自动解码文件名还是可以设置编码?


在 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 中我不知道我应该做什么。

最佳答案

Perl 6 在内部使用 Unicode 字符串(以基于字素的表示形式),编码发生在 IO 边界。

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

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

关于io - Perl6:来自 IO::Path 的 `dir` 是否总是以正确的方式解码文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34929228/

相关文章:

io - 使用 MPI_File_write_all 的 MPI-IO 死锁

pattern-matching - Raku 能否保证模式匹配是详尽的(在编译时)?

python - 如何在 Python 中写入/打包二进制字符串到文件

arrays - FORTRAN中不带参数的FMT有什么用?

raku - Perl 6 中交替出现的文字正则表达式中的重复元素

grammar - 使用 Perl 6 语法在原始正则表达式中传递变量

raku - 像函数一样传递运算符

windows - 如何在 Windows 上编译共享库,以便它可以与 raku 中的 NativeCall 一起使用?

c - write() 不写入数据

io - 将固定宽度字段写入 Julia 中的流?