微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

修复非统一编码文本文件的编码

我有一个长文本文件,在随后的文本块(iso或utf-8)中使用明显不同的编码。 这是使用>> file.bib附加文本的结果,并从不同的来源(网页)复制和粘贴。

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

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

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

shell不正确地读取windows中创build的文件

从Windows和Linux读取文件会得到不同的结果(字符编码?)

Windows DHCP客户端主机名编码

Emacs在进程缓冲区中显示^ M

CP1242支持的语言

在Windows应用程序中保存文件时指定编码

在Windows上设置Pythonterminal编码

将整个项目的字符集转换为utf-8

涉及python和命令提示符中的特殊符号的文本

Python,Windows,Ansi – 编码,再次

如果你可以假设每一行的统一编码,你知道替代编码:

#!/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 }

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

我用vim来做这个,但是我想可以在任何编辑器中完成。

选择(shift + v)要更改编码的文本块。

键入:!enca -L lang – (用你的语言替换'lang',我用'enca -L cs'。enca实用程序应该告诉你所选块最可能的编码)

按下你(所以你撤消你的文本中出现的enca的答案)

再次选择该块,这次运行:!iconv -f determined_encoding -t UTF-8

请注意,当你处于可视模式时,vim会自动将按下的内容展开为: <,>,这正是您想要在文本块上运行程序的目的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐