我有大约 700 个文件,它们是隐藏式字幕软件处理的结果。我可以在 GUI 中在我的 PC 或 Mac 上打开这些文件,但是当我使用 nano 在服务器上打开它们时,我得到了以下信息:
��0^@0^@;^@0^@0^@;^@0^@0^@;^@0^@0^@ ^@0^@0^@;^@0^@0^@;^@0^@6^@;^@0^@0^@
^@
^@N^@o^@t^@ ^@A^@v^@a^@i^@l^@a^@b^@l^@e^@
以下是我尝试过的一些命令行的结果:
#file infile.txt
infile.txt: data
# file -bi --mime-encoding infile.txt
application/octet-stream; charset=binary
recode ../CR-LF infile.txt
#file -bi --mime-encoding infile.txt
#iconv -f binary -t uff-8 infile.txt > out.txt
iconv: conversions from `binary' and to `uff-8' are not supported
#recode ../CR-LF infile.txt
#recode UTF8..ISO-8859-15 infile.txt
# file -bi --mime-encoding infile.txt
text/plain; charset=utf-16le
#xxd infile.txt | head -5
0000000: fffe 3000 3000 3b00 3000 3000 3b00 3000 ..0.0.;.0.0.;.0.
0000010: 3000 3b00 3000 3000 2000 3000 3000 3b00 0.;.0.0. .0.0.;.
0000020: 3000 3000 3b00 3000 3600 3b00 3000 3000 0.0.;.0.6.;.0.0.
0000030: 0d00 0d0a 004e 006f 0074 0020 0041 0076 .....N.o.t. .A.v
0000040: 0061 0069 006c 0061 0062 006c 0065 00 .a.i.l.a.b.l.e.
实际的文件看起来像这样(事实证明这不是最好的选择,我意外地选择了一个没有太多内容的文件):
00;00;00;00 00;00;06;00 Not Available
然后,如果我对文件进行 nano 处理,我会在底部看到文本,表明它是从 DOS 和 Mac 格式转换而来的,但它仍然是垃圾。我需要能够循环遍历文件并将数据导入数据库,但如果服务器无法读取格式,我当然无法做到这一点。
我希望找到一个长期的解决方案,因为我将来会生成很多这样的解决方案,并且不想使用 Windows powershell 或同等产品,而是将转换纳入我的过程。
答案1
所以最终我的解决方案是使用 recode。虽然没有太多出色的文档,但诀窍是使用 -f 选项强制更改它。
recode -f UTF-7 *.txt