我在Perl下面有一段代码
my $file2 = "devil’s-claw-extract.html";
$file2 =~ s/’/’/ig;
print "$file2";
这个代码工作正常(意味着在konsole中运行时替换'with ’
)但不能在浏览器中运行。
请帮帮我。
答案 0 :(得分:4)
当然它“有效”,我会相信,直到你产生一个自成一体的例子,否则。
你的第一个问题是你正在重新发明轮子,你已经有了module on CPAN to do such escaping:
use utf8; # because this source file contains special chars
use HTML::Entities;
my $file2 = "devil’s-claw-extract.html";
print encode_entities $file2;
输出:
devil’s-claw-extract.html
或encode_entities_numeric
:
use utf8;
use HTML::Entities 'encode_entities_numeric';
my $file2 = "devil’s-claw-extract.html";
print encode_entities_numeric $file2;
输出:
devil’s-claw-extract.html
其次,值得注意的是,您的输入字符串包含’
,一个右引号。这有代码点U+2019
(不是U+0092
,它位于私人使用区域。方便的是,它在Windows-1252编码中解码为’
,但实际编码应始终为明确设定)。
你可能想要的撇号 '
是U+0027
或'
。