如何在VIM中查看EBCDIC格式的文件?

时间:2016-07-07 13:53:01

标签: vim

在VIM中查看EBCDIC格式化文件的最佳方法是什么?

1 个答案:

答案 0 :(得分:6)

在大型机上

首先,如果Vim已经编译并且在默认编码为EDCDIC的系统上运行(例如,带有ANSI C编译器的IBM manframe),那么Vim将默认在系统的代码页中打开EBCDIC文件。这样的Vim实例将具有:

has("ebcdic")

评估为1。当使用--version调用时,Vim将打印:

+ebcdic

未在EBCDIC环境中编译的Vim实例永远不会将has("ebcdic")评估为true。需要Vim的这一功能,因为其他功能在纯粹的EBCDIC环境中表现不同。

不在大型机上

然而,今天的大多数系统都不使用EBCDIC代码页。对于需要在更受欢迎的系统上在Vim中编辑EBCDIC代码页中编码的文件的情况,Vim使用iconv库。实质上,为了能够打开在EBCDIC代码页中编码的文件,需要使用iconv支持编译Vim。 iconv支持可以通过评估来测试:

has("iconv")

或者搜索

+iconv
输出vim --version中的

字符串。

EBCDIC有几个代码页,Vim只能使用编译它的iconv库支持的代码页。要检查哪些代码页可用,您可以使用iconv库附带的iconv实用程序:

iconv --list

现在,让我们假设我们有一个名为myfile的文件,其中包含EBCDIC-US代码页(也称为EBCDIC-037代码页),{{1}安装在系统上支持此代码页。

在Vim中打开文件之前,我们需要将Vim的编码设置为iconv,我们需要utf-8

~/.vimrc

set enc=utf-8 建议如果执行任何文件转换(通过:h fenc),则必须将编码设置为utf-8。否则,在写回文件时可能会丢失数据。

现在我们使用iconv在Vim中打开文件,然后查看损坏的字符。没关系,我们现在需要使用vim myfile执行转换:

iconv

Vim现在会在:e ++enc=EBCDIC-US 中显示该文件,但会将该文件保存在utf-8中,这两个文件都是动态使用EBCDIC-US次转化完成的。

结账单

IBM对代码页命名的映射:

iconv

EBCDIC-037 EBCDIC-273 EBCDIC-500 ... 的名字

iconv

通常是非平凡的。但是,如果显示编码(EBCDIC-US EBCDIC-AT-DE-A EBCDIC-BE ... )设置为enc,那么使用

尝试不同的代码页时应该没有问题
utf-8

直到找到正确的转换。

额外注意事项:如果您有更多与Vim相关的问题,请考虑使用vi.SE