gpt4 book ai didi

perl - perl 的 File::Glob 是否应该始终通过 utf8::decode 进行后过滤?

转载 作者:行者123 更新时间:2023-12-04 20:10:22 24 4
gpt4 key购买 nike

以下最小示例的输出表明(在我的 linux 机器上) File::Glob 似乎具有将 utf8 字符串转换为非 utf8 的意外副作用:

#!/usr/bin/perl 

use utf8;

use strict;

my $x = "påminnelser";
my $y = glob $x;

print "x=",utf8::is_utf8($x),"=\n";
print "y=",utf8::is_utf8($y),"=\n";

这导致我的程序出现错误行为。在 linux 上,看起来我可以通过在 File::Glob 之后应用 utf8::decode() 来修复它。这是解决这个问题的正确方法吗?这是 File::Glob 中的错误吗?我的修复是否会在其他系统(如 Windows)上产生正确的结果?

最佳答案

处理文件名的函数的编码处理目前在 perl 的待办事项列表中:Unicode in Filenames .问题是一些流行的操作系统(即 Linux)不支持文件名编码(除了使用当前的语言环境设置,但这被设计破坏了),因此在 Perl 中获得可移植的解决方案并不容易。

我的建议是完全避免使用非 ASCII 文件名。

关于perl - perl 的 File::Glob 是否应该始终通过 utf8::decode 进行后过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com