在本指南中,我们将描述什么字符编码,并涵盖使用命令行工具将文件从一个字符编码转换为另一个的几个示例。 那么最后,我们将看看怎么把几个文件从任何字符集( 字符集 )转换为UTF-8编码的Linux操作系统。
正如你可能已经想到的,计算机不理解或存储字母,数字或任何我们作为人类可以感知除了位。 有点只有两种可能的值,即要么是0
或1
, true
或false
, yes
或no
。 每一个其他的事情,如字母,数字,图像必须用位表示,以供计算机处理。
简单来说, 字符编码是通知计算机如何解释生零和一为实际的字符,其中,一个字符由组数字表示的方法。 当我们在一个文件中输入文字,我们形成的词句是来自不同的字符熟了,人物被组织成一个字符集 。
有各种不同的编码方案在那里,如ASCII,ANSI,等等的Unicode。 下面是ASCII编码的一个例子。
Character bits A 01000001 B 01000010
在Linux中,iconv命令行工具,用于从文字编码的一种形式转换为另一种。
可以使用该文件的命令,通过使用检查文件的编码-i
或--mime
标志使mime类型字符串印刷在下面的实施例:
$ file -i Car.java $ file -i CarDriver.java
在Linux中检查文件编码
使用的iconv的语法如下:
$ iconv option $ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
凡-f
或--from-code
意味着输入编码和-t
或--to-encoding
指定输出编码。
要列出所有已知的编码字符集,请运行以下命令:
$ iconv -l
列出Linux中的编码字符集
将文件从UTF-8转换为ASCII编码
接下来,我们将学习如何从一种编码方案转换到另一种。 下面的命令从ISO-8859-1转换为UTF-8编码。
考虑一个文件名为input.file
包含字符:
� � � �
让我们先检查文件中字符的编码,然后查看文件内容。 紧密结合,我们可以将所有的字符ASCII编码。
运行iconv命令后,我们接着检查输出文件和如下所述的字符的新的编码的内容。
$ 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
在Linux中将UTF-8转换为ASCII
注意 :在情况下,字符串//IGNORE
加到到编码,字符不能被转换,并转换后显示错误。
再次,假定字符串//TRANSLIT
加到到编码如在上面的例子(ASCII // TRANSLIT),字符被转换被音译为需要和如果可能的话。 这意味着在字符不能在目标字符集中表示的情况下,它可以通过一个或多个类似的查找字符来近似。
因此,不能进行音译,而不是在目标字符集中的任何字符被替换为问号(?)
输出。
将多个文件转换为UTF-8编码
反观我们的主要话题,多个或全部文件转换在目录中UTF-8编码,可以写成如下称为encoding.sh一个小的shell脚本:
#!/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"
欲了解更多信息,请查看通过的iconv手册页。
$ man iconv
总而言之,理解编码以及如何将一种字符编码方案转换为另一种字符编码方案是每个计算机用户的必要知识,对于程序员来说,当涉及到处理文本时更是如此。
最后,您可以通过使用以下评论部分与我们联系,以获取任何问题或反馈。