带有内容的 txt 文件可以在 GUI 编辑器中正确打开(我使用的是 sublime)。但在 vim 中,它显示如下,现在我无法在此文件中执行 grep。当我使用 less 时,它显示“可能是二进制文件”。我如何将其转换为正确的文本文件。知道为什么会出现这些奇怪的字符吗?
Y^@ear|d^@o^@n^@o^@r^@c^@o^@d^@e^@|^@d^@o^@n^@o^@r^@n^@a^@m^@e^@|^@a^@g^@e^@n^@c^@y^@c^@o^@d^@e^@|^@a^@g^@e^@n^@c^@y^@n^@a^@m^@e^@|^@c^@r^@s^@i^@d ^@|^@p^@r^@o^@j^@e^@c^@t^@n^@u^@m^@b^@e^@r^@|^@i^@n^@i^@t^@
答案1
它看起来像一个以 Unicode UTF-16 LE 存储的纯文本文件,其中每个 Unicode 代码点存储为一个或两个 16 位代码单元。
如果文本本身主要是 ASCII(所有代码点 ≤ U+00FF),并且您使用不支持 UTF-16 的编辑器查看文件,则结果看起来就像在每个字节后插入了一个 NUL 字节。
在命令行中,使用iconv -f utf-16le -t utf-8 < file.txt > file-new.txt
来修复它。
在 Vim 中,您可以:e ++enc=utf-16le
使用正确的编码重新打开该文件。
如果可能的话,告诉 Sublime 将文件保存为 UTF-8,这将与各种工具更加兼容。(在 Vim 中:set fileencoding=utf-8 | w
:)