Linux
查找文本文件的編碼
該
iconv
命令可能會更改文件編碼。但是有沒有找到某個文本文件的文件編碼的命令。另外,我正在嘗試查找每個國家/地區使用的文件編碼標準。這樣我就可以將編碼更改為正確的ISO標準。哪個命令可以找到文件編碼?.txt副檔名。或其他諸如**.py或.c**的原始碼文件?
然後將其更改為正確的國家編碼。基於國家標準。我正在嘗試查找正確的字節序格式和其他相關文件的參考。
製作文本文件在美國創建了 UTF-8,格式為俄語。好像它是在俄羅斯格式的兼容性中製作的。
使用
file
. 有關詳細資訊,請參閱手冊頁file(1)
,magic(5)
但這裡有一些範例:我已經將一堆各種文件複製到一個目錄中:
$ ls -l total 389 -rw-r--r-- 1 cas cas 372976 Apr 24 19:09 a.txt -rw-r--r-- 1 cas cas 14 Apr 24 19:09 b.txt -rw-r--r-- 1 cas cas 12060 Apr 24 19:09 c.h -rwxr-xr-x 1 cas cas 5706 Apr 24 19:09 d.sh* -rwxr-xr-x 1 cas cas 197 Apr 24 19:09 e.pl* -rw-r--r-- 1 cas cas 6 Apr 24 19:09 f.txt -rwxr-xr-x 1 cas cas 203072 Apr 24 19:09 g* -rwxr-xr-x 1 cas cas 79984 Apr 24 19:09 h.c -rw-r--r-- 1 cas cas 2975 Apr 24 19:09 i.py -rw-r--r-- 1 cas cas 648 Apr 24 19:09 j.csv
file``/etc/magic
將使用在它們是什麼中 找到的模式做出最好的猜測:$ file * a.txt: UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators b.txt: Little-endian UTF-16 Unicode text, with no line terminators c.h: C++ source, ASCII text d.sh: Bourne-Again shell script, ASCII text executable e.pl: Perl script text executable f.txt: ASCII text g: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=4bb4d8a0059d50d87638057168576f5ef205efd4, for GNU/Linux 3.2.0, stripped h.c: C source, ASCII text, with CRLF line terminators i.py: Python script, ASCII text executable j.csv: CSV text
有了這些文件,它是 100% 正確的——它完美地辨識了它們。大多數情況下,情況會如此,但它並不完美,有時可能會出錯。
請注意,
file
它不關心文件名的“副檔名”(.txt、.py、.c 等)是什麼,它會檢查文件的內容以確定它是什麼。它還可以告訴我它認為它們是什麼 mime 類型:
$ file --mime-type * a.txt: text/plain b.txt: text/plain c.h: text/x-c++ d.sh: text/x-shellscript e.pl: text/x-perl f.txt: text/plain g: application/x-pie-executable h.c: text/x-c i.py: text/x-script.python j.csv: application/csv
以及他們使用什麼編碼:
$ file --mime-encoding * a.txt: utf-8 b.txt: utf-16le c.h: us-ascii d.sh: us-ascii e.pl: us-ascii f.txt: us-ascii g: binary h.c: us-ascii i.py: us-ascii j.csv: us-ascii