我是一名维护书籍的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");
答案 0 :(得分:1)
答案 1 :(得分:0)
错误,“使用开放”表示您的数据不是 UTF-8。在FILE和OUT上尝试binmode? p>
答案 2 :(得分:0)
我最终使用了XCode文本编辑器。通过选择换行符并将其粘贴到搜索/替换对话框中,我能够用单个换行符替换所有双换行符。 然后我保存了文件并使用了比较实用程序。