Unix 将编码未知的文本文件转换为utf-8

Unix 将编码未知的文本文件转换为utf-8,unix,utf-8,character-encoding,Unix,Utf 8,Character Encoding,我需要使用unix命令将一个大约有一百万行的非常大的文本文件转换为utf-8。 起初,我只是用记事本++打开它,玩弄编码,发现了一个我认为有效的。看起来不错。但是当我滚动浏览文件时,我发现有几千行是这样的: "我们","我们","我们", 我尝试了记事本++中的所有编码,但都不起作用。 我还在unix中尝试了file-bi命令,但它只是说: 应用程序/八位组流;字符集=二进制 然后,我从文件的不同部分提取了两行不同的代码,将它们分别写在一个新的文本文件中,并对它们使用file-bi命令。对于第一

我需要使用unix命令将一个大约有一百万行的非常大的文本文件转换为utf-8。
起初,我只是用记事本++打开它,玩弄编码,发现了一个我认为有效的。看起来不错。但是当我滚动浏览文件时,我发现有几千行是这样的:

"我们","我们","我们",

我尝试了记事本++中的所有编码,但都不起作用。 我还在unix中尝试了file-bi命令,但它只是说: 应用程序/八位组流;字符集=二进制

然后,我从文件的不同部分提取了两行不同的代码,将它们分别写在一个新的文本文件中,并对它们使用file-bi命令。对于第一个,它说的是相同的,对于第二个,它说的是:文本/普通;charset=unknown-8bit

当我在第二个文件中尝试编码时,我认为在第一个文件中有效,它看起来不错,但是当我在大文件中使用编码时,这行看起来像垃圾,尽管前40000行看起来不错

说到这一点,我并不是一个真正的巫师,但这对我很重要,我希望你能帮助我

我尝试了
hextump file.txt
,尽管我不知道它的作用。不管怎样,我得到了这个:

0000000 4eeb b6cf 0000 4b62 dd92 53f5 6364 f902
0000010 6cb1 ed9f 06a2 956b 2b98 8278 1583 857b
0000020 bb66 65c9 eb7b 1441 bad0 161b 24ec 3320
0000030 6992 cff0 737a 9498 1dc1 45ca 88f1 2da5
0000040 8e01 59e4 2acc 53bf 1568 e3e8 09ff 11e7
0000050 d7b5 18e5 6d20 c603 deb4 13ea feff 44ef
0000060 fbeb ecea 3135 01d8 7f49 5bd9 4c3e d3b4
0000070 cdf3 7556 8de9 1a52 c1b7 a8d6 d418 190c
0000080 2616 d63e 3714 e45d 1513 9ad6 14aa 63c9
0000090 8286 71cc 8221 51e8 b393 5c7b 59c2 4290
00000a0 7a36 5fd2 4222 22a5 5f9e 39d7 22d6 f22f
00000b0 7377 7541 904a e351 4010 cdf3 118b e226
00000c0 21e0 d4c5 553c 5f4e 5377 667d 3d96 a157
00000d0 2469 6edb 0c48 9d50 052a 000a
00000db

您确定它是一个文本文件并且是utf-8编码的吗?它肯定是一个文本文件并且不是utf-8编码的。这就是“对编码进行了研究,发现了一个我认为有效的编码”的问题。这是哪种编码?它是OEM 861。我猜该文件不是完全文本的,而是包含二进制元素。特别是因为十六进制转储显示空字节(
00
),这些字节不属于纯文本文件(除非它是UTF-16或UTF-32编码的,而您的不是)。这就解释了为什么在找到覆盖整个文件的单一文本编码时会遇到很多困难。