我是维护 Kindle(HTML) 和 Open Office 版本的书籍的作者。我有时会忘记对其中一个进行更改,并且文件会出现分歧。
我的过程是从每个文本中复制文本并粘贴到 UTF-8 中的单独文本文件中(使用 TextEdit 中的粘贴和匹配样式),然后执行差分操作。但是,HTML 粘贴会在段落之间添加空行。
我有一个文件差异工具,但它没有忽略空白行的选项。我的想法是编写一个 Perl 脚本来删除空行。但是,该脚本的输出搞砸了特殊字符——如 ndashes、花引号等。我尝试使用 BINMODE 和其他技巧,但无济于事。
我将接受一个指向 MAC OS X 的忽略空白行的免费比较器的指针,或者让 Perl 不搞砸 UTF-8 特殊字符的方法。我正在使用 Perl 5.14。我更喜欢不依赖于新功能的答案,但如果我必须安装新的 Perl,我会的。
更新:
这不起作用:
use open IO => ":encoding(iso-8859-7)";
open(FILE, "From HTML.txt") or die "$!\n";
open(OUT, ">From HTML - no blank lines.txt") or die "$!\n";
while(<FILE>) {
next if /^\s*$/;
print OUT $_;
}
close FILE; close OUT;
我也试过打电话binmode(OUT, ":utf8");
更新:从另一个 Stackoverflow 问题中尝试了这个提示但没有成功:
open(my $fh, "<:encoding(UTF-8)", "filename");