Perl - 带有汉字的quotemeta

时间:2014-03-06 04:48:03

标签: perl chinese-locale quotemeta

我使用quotemeta来转义中文文件名的文件路径。但它返回错误。

代码示例:

#!/usr/bin/perl

use Encode;
my $ustring1 = "/opt/游戏美术.txt";
my $ustring2 = quotemeta $ustring1;

print "$ustring1\n" ;
print "$ustring2";
print "\n";

请帮助解释并提供解决此问题的代码。 我正在使用Perl v5.10.1 非常感谢。

更新问题:

#!/usr/bin/perl

use Encode;
use utf8;
use open ':std', ':encoding(UTF-8)';

my $ustring1 = "游戏美术";
my $ustring2 = quotemeta $ustring1;
my $rc = 0xffff & system("echo a > $ustring1.txt2");


print "$ustring1\n" ;
print "$ustring2\n";
print "$rc";
print "\n";

现在输出很好。但是txt2文件的文件名是错误的:游??美术.txt2。请帮忙

1 个答案:

答案 0 :(得分:1)

也许,use utf 8有帮助:

#!/usr/bin/perl

use Encode;
use utf8;
use open ':std', ':encoding(UTF-8)';

my $ustring1 = "/opt/游戏美术.txt";
my $ustring2 = quotemeta $ustring1;

print "$ustring1\n" ;
print "$ustring2";
print "\n";

输出:

/opt/游戏美术.txt
\/opt\/游戏美术\.txt