在本指南中,我们将描述什么是字符编码,并介绍一些使用命令行工具将文件从一种字符编码转换为另一种字符编码的示例。最后,我们将了解如何从任何字符集转换多个文件(字符集) 到UTF-8Linux 中的编码。
您可能已经想到,计算机无法理解或存储字母、数字或我们人类可以感知的任何其他内容(除了位)。一个位只有两个可能的值,即0
或者1
,true
或者false
,yes
或者no
。所有其他事物,例如字母、数字、图像,都必须以位表示,以便计算机处理。
简单来说,字符编码是一种通知计算机如何将原始零和一解释为实际字符的方法,其中字符由一组数字表示。当我们在文件中键入文本时,我们形成的单词和句子是由不同的字符组合而成的,并且字符被组织成一个字符集。
有多种编码方案,例如ASCII码,美国国家标准协会,统一码除其他外。下面是一个例子ASCII码编码。
Character bits A 01000001 B 01000010
在 Linux 中,图标命令行工具用于将文本从一种编码形式转换为另一种编码形式。
您可以使用以下命令检查文件的编码文件命令,通过使用-i
或者--mime
允许打印 mime 类型字符串的标志,如下例所示:
$ file -i Car.java $ file -i CarDriver.java

使用的语法图标如下:
$ iconv option $ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
在哪里-f
或者--from-code
表示输入编码和-t
或者--to-encoding
指定输出编码。
要列出所有已知的编码字符集,请运行以下命令:
$ iconv -l

将文件从 UTF-8 编码转换为 ASCII 编码
接下来,我们将学习如何从一种编码方案转换为另一种编码方案。下面的命令转换自ISO-8859-1到UTF-8编码。
考虑一个名为input.file
其中包含字符:
� � � �
让我们首先检查文件中字符的编码,然后查看文件内容。紧密地,我们可以将所有字符转换为ASCII码编码。
运行后图标命令,然后我们检查输出文件的内容和字符的新编码,如下所示。
$ file -i input.file $ cat input.file $ iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file $ cat out.file $ file -i out.file

笔记: 如果字符串//IGNORE
添加to-encoding后,无法转换的字符,转换后显示错误。
再次假设字符串//TRANSLIT
如上例所示添加到 to-encoding (ASCII//转译),如果可能的话,要转换的字符会根据需要进行音译。这意味着如果某个字符无法在目标字符集中表示,则可以通过一个或多个外观相似的字符来近似表示。
因此,任何无法音译且不在目标字符集中的字符都将替换为问号(?)
在输出中。
将多个文件转换为 UTF-8 编码
回到我们的主题,要将目录中的多个或所有文件转换为 UTF-8 编码,您可以编写一个名为的小 shell 脚本编码.sh如下:
#!/bin/bash #enter input encoding here FROM_ENCODING="value_here" #output encoding(UTF-8) TO_ENCODING="UTF-8" #convert CONVERT=" iconv -f $FROM_ENCODING -t $TO_ENCODING" #loop to convert multiple files for file in *.txt; do $CONVERT "$file" -o "${file%.txt}.utf8.converted" done exit 0
保存文件,然后使脚本可执行。从文件所在的目录运行它(*.txt
) 位于。
$ chmod +x encoding.sh $ ./encoding.sh
重要的:您也可以使用此脚本将多个文件从一种给定编码转换为另一种编码,只需使用FROM_ENCODING
和TO_ENCODING
变量,不要忘记输出文件名"${file%.txt}.utf8.converted"
。
欲了解更多信息,请浏览图标手册页。
$ man iconv
总结本指南,了解编码以及如何从一种字符编码方案转换为另一种字符编码方案是每个计算机用户的必要知识,对于处理文本的程序员来说更是如此。
最后,如果您有任何问题或反馈,可以通过下面的评论部分与我们联系。