Linux

查找文本文件的編碼

  • April 26, 2021

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

引用自:https://unix.stackexchange.com/questions/646482