Perl在Windows中使用外来字符

时间:2012-03-04 16:51:16

标签: perl file utf-8

我正在尝试使用perl在Windows中打印土耳其语中的ş,ı,ö,ç等字符,但我无法做到。我的主要目的是在Windows中使用特殊字符创建文件夹。

这是我的代码:

    use Text::Iconv;
    use strict;
   use warnings;
    $conve = Text::Iconv->new("windows-1254","UTF-16");
    $converted = $conve->convert("ş");
    print $converted;
    system("mkdir $converted");

我在第7行得到格式错误的utf-8字符(字节0xfe)aa.pl

1 个答案:

答案 0 :(得分:4)

将以下内容另存为UTF-8:

use utf8;
use strict;
use warnings;
use open ":std", ":encoding(cp1254)";  # Set encoding for STD*
use Encode qw( encode );

my $file_name = "ş";
print "$file_name\n";
system(encode('cp1254', qq{mkdir "$file_name"}));

use utf8告诉Perl源是UTF-8。

use open ":std", ":encoding(cp1254)";导致发送到STDOUT和STDERR的文本使用cp1254进行编码,并导致从STDIN读取的文本从cp1254解码。

它不会影响发送给system之类的sustem调用的内容,因此您需要对这些调用进行明确编码。