批次轉換txt檔案編碼

批次轉換txt檔案編碼

我有大約 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

然後,如果我對文件進行奈米化,我會在底部看到文本,說明它是從 DOS 和 Mac 格式轉換而來的,但它仍然是垃圾。我需要能夠循環遍歷文件並將資料匯入資料庫,但是如果伺服器無法讀取格式,我當然不能這樣做。

我想找到一個長期的解決方案,因為我將來會產生很多這樣的解決方案,並且寧願不使用 Windows powershell 或等效工具,而是將轉換合併到我的流程中。

答案1

所以我的解決方案最終是使用重新編碼。沒有很多很棒的文檔,但訣竅是使用 -f 選項強制它進行更改。

recode -f UTF-7 *.txt

相關內容