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

标签 linux vim

我得到了一个 XML 格式的跟踪文件(在 Windows 机器上创建)。当我在 Vim 中打开它或在命令行(在 Mac 或 Linux 上)上 cat 时,它在视觉上看起来很好。但是在 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 中删除这些内容的正确方法有什么想法吗?

最佳答案

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

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

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

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

关于linux - 在 Vim 中从 DOS 到 Linux 的文本文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28420086/

相关文章:

linux - 通过管道传输到 grep 的计数器循环似乎出乎意料地随机

linux - 如何调试 ARM Linux 内核 (msleep()) 锁定?

git - 快速切换版本

Vim:失去焦点时返回命令模式

session - 强制 Vim 的 mksession 使用相对路径?

从终端编译 C 代码,返回 fatal error ?

linux - SSH 添加,但仍然致命无法从远程存储库读取

c - 如何在V4L2中正确设置扩展控件?

linux - 如何在 Linux Mint 17.2 XFCE 中更改终端光标的背景颜色

Vim:在用户定义的命令中发出正常模式命令