在Vim中从DOS到Linux的文本文档

时间:2015-02-09 21:51:08

标签: linux vim

我获得了XML格式的跟踪文件(在Windows机器上创建)。当我在Vim中打开它或在命令行(在Mac或Linux上)上它时,它在视觉上看起来很好。但是,在XML解析器未能像我期望的那样加载文档之后,我发现,在深入挖掘之后,有一些不可打印的字符通过:

h001:logs bill$ xxd trace.xml | head -n 3
0000000: fffe 3c00 3f00 7800 6d00 6c00 2000 7600  ..<.?.x.m.l. .v.
0000010: 6500 7200 7300 6900 6f00 6e00 3d00 2200  e.r.s.i.o.n.=.".
0000020: 3100 2e00 3000 2200 2000 6500 6e00 6300  1...0.". .e.n.c.

然后我尝试了以下操作,没有运气删除这些未打印的字符:

:%s/[^[:print:]]//g
:%s/[^[:control:]]//g
:%s/[^[:null:]]//g

我认为这是因为我正在从Windows切换到Linux,但我没有看到任何常见的工件(例如^ M,^ @等)。

有关这里发生了什么的想法,以及从Vim中删除这些内容的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

问题是您的XML解析器无法理解UTF-16。

您可以通过打开一个空的vim会话并执行以下操作来转换它:

:e ++enc=utf-16le file.txt
:w ++enc=utf8

这将使用utf-16 little endian编码打开文件,并将其保存为utf-8。