Perl - цитата с китайскими иероглифами

Я использую 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 ответ

Решение

Может быть, 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
Другие вопросы по тегам