dma*_*a_k 3 filesystems unicode perl
在Windows中存在一个常见问题:文件名应在传递到之前转换为本地代码页open()
.当然,有可能使用Win32::API
它,但我不希望我的脚本依赖于平台.目前我必须写一些类似的东西:
open IN, "<", encode("cp1251", $filename) or die $!;
Run Code Online (Sandbox Code Playgroud)
但有没有图书馆,隐藏这些细节?我认为可以自动检测本地代码页,所以我只想传递unicode文件名并忘记细节.为什么它仍然不在盒子里?
它过去只能工作到5.8.1,然后Jarkko把它取出来,并-C
在最顶层的一个无法进行的不相容的改变中打破了转换.这使得Windows成为二等公民并且直到今天都让我很烦,因为任何其他动态语言都没有这种荒谬的缺陷.或许现在是一个好时机,我们可以听到这种变化的理由变得更糟.
无论如何,你想要PerlIO::fse
,但它不是一个完美的解决方案,因为你很快就会发现自己.