该iconv
命令可能会更改文件编码。但是有没有一个命令可以查找某个文本文件的文件编码。另外,我正在尝试查找每个国家/地区使用的文件编码标准。这样我就可以将编码更改为正确的国际标准化组织标准。
哪个命令可以找到文件编码?。TXT扩大。或者其他诸如.py, 或者。C、源代码文件?
然后将其更改为正确的国家/地区编码。基于国家标准。我正在尝试查找正确的字节序格式的参考以及其他相关文档。
制作一个在美国创建的 UTF-8 文本文件,格式为俄语。就好像它是用俄语格式兼容性制作的。
答案1
使用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 等)是什么,它会检查文件的内容以确定它是什么。
它还可以告诉我它认为它们是什么类型的哑剧:
$ 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