0

我是维护 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");
4

3 回答 3

1

GNU diff-B/--ignore-blank-lines-b/--ignore-space-change

于 2012-07-15T16:37:15.737 回答
0

错误,“使用开放”表示您的数据不是UTF-8。在 FILE 和 OUT 上尝试 binmode?

于 2012-07-15T17:27:43.220 回答
0

我最终使用了 XCode 文本编辑器。通过选择一个换行符并将其粘贴到搜索/替换对话框中,我能够用单个换行符替换所有双换行符。然后我保存了文件并使用了我的比较实用程序。

于 2012-07-18T20:39:03.673 回答