加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 修复非相干编码文本文件的编码

发布时间:2020-12-14 01:03:50 所属栏目:Linux 来源:网络整理
导读:我有一个很长的文本文件,在后续的文本块(iso或utf-8)中使用明显不同的编码.这是使用附加文字的结果file.bib并从不同来源(网页)复制和粘贴. 原则上可以区分这些块,因为它们是bibtex条目 @article{key,author={lastname,firstname},...} 我想将它转换为一个连
我有一个很长的文本文件,在后续的文本块(iso或utf-8)中使用明显不同的编码.这是使用>>附加文字的结果file.bib并从不同来源(网页)复制和粘贴.

原则上可以区分这些块,因为它们是bibtex条目

@article{key,author={lastname,firstname},...}

我想将它转换为一个连贯的utf-8文件,因为它似乎崩溃了我的bibtex查看器(kbibtex).我知道我可以使用iconv转换整个文件的编码,但我想知道是否有办法修复我的文件而不破坏某些条目.

解决方法

如果您可以为每一行假设统一编码,并且您知道备用编码:

#!/usr/bin/perl
use Encode;
while(<>) {
      my $line;
      eval {
        $line=Encode::decode_utf8( $_ );
      }
      if ($@) $line=Encode::decode( 'iso-8859-1',$_ ); #not UTF-8
      # Now $line is UNICODE.Do something to it

}

如果行是混合编码,您仍然可以通过单词执行相同操作,但您仍然知道备用编码是什么.如果不知道备用编码,或者你有多个,你需要使用一些编码猜测库,这可能会猜错.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读