我试图在Perl中编写一个函数来读取字符串,找到一个特定的Mac unicode字符,并将该字符更改为相应的Windows unicode字符。我是Perl的新手,但我知道如何编写基本替换正则表达式的代码。我不确定如何匹配不同平台的特定字符。任何见解都会有所帮助。感谢
答案 0 :(得分:3)
您想要的代码如下所示:
open(my $fh_in, '<:encoding(...)', $qfn_in ) or die $!;
open(my $fh_out, '>:encoding(...)', $qfn_out) or die $!;
while (<$fh_in>) {
s/.../.../g;
print($fh_out $_);
}
您还没有指定输入文件的编码,输出文件所需的编码,要替换的字符以及要替换的字符,因此您需要填写那些空白。
考虑到输入文件的编码,您可以使用以下命令确定要替换的字符:
use charnames ':full';
open(my $fh_in, '<:encoding(...)', $qfn_in) or die $!;
while (<$fh_in>) {
for (map ord, split //) {
printf("U+%04X %s\n", $_, charnames::viacode($_));
}
print("\n");
}
您可能正在尝试替换
U+2019 RIGHT SINGLE QUOTATION MARK (’)
与
U+0027 APOSTROPHE (')
你可以用
做什么s/\x{2019}/\x{0027}/g;