取消文本文件二进制格式的转换

取消文本文件二进制格式的转换

我有一个相当大的 CSV 文件(约 700MB),我知道它由 27 个字符的字母数字哈希组成;没有逗号或任何花哨的东西。不知何故,在从 Windows 迁移到 Linux 的过程中(通过 winSCP,然后是一些常规 SCP),它变成了某种我不熟悉的二进制格式。

如果我在 vi 中打开文件,则一切正常,底部显示 [converted],尽管我知道这不是行尾问题(dos2unix 也无济于事)。如果我“head”文件,则除了第一行开头的“ÿþ”外,其余内容均正常。但是,如果我在 nano 中打开文件,则会看到开头的“ÿþ”,然后在每个字符(甚至换行符和 EoF)前看到“^@”。

如果我尝试重新保存或复制文件(例如通过:head file.csv > short.txt),则此特殊编码会保留。我通过 SSH 客户端将 vi 中的前十行(可正确显示)复制到 Windows 剪贴板中,然后将其粘贴到新的文本文件 test.txt 中。此文件在 vi 中打开时看起来完全相同(通过“head”打开时类似,但少了“ÿþ”),尽管文件大小大约是 vi 的一半。此外,

file test.txt
test.txt: ASCII text
file short.txt
short.txt:

我不知道这个曾经的文本文件被转换成了什么格式(在互联网上搜索符号非常困难),但肯定有办法把它转换回来。有什么想法吗?

答案1

“ÿþ” 可能是 Unicode 字节顺序标记 (BOM),而 ^@ 可能是每个 16 位 Unicode 字符的第一个字节。

使用 recode 或 iconv 将其从 UTF-16 转换为 ASCII。

相关内容