我正在尝试使用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
答案 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调用的内容,因此您需要对这些调用进行明确编码。