shell中encoding=utf-8_如何在Linux中将⽂件编码转换为UTF-
8
在这篇教程中,我们将解释字符编码的含义,然后给出⼀些使⽤命令⾏⼯具将使⽤某种字符编码的⽂件转化为另⼀种编码的例⼦。***,我们将⼀起看⼀看如何在 Linux 下将使⽤各种字符编码的⽂件转化为 UTF-8 编码。
你可能已经知道,计算机除了⼆进制数据,是不会理解和存储字符、数字或者任何⼈类能够理解的东西的。⼀个⼆进制位只有两种可能的值,也就是 0 或 1,真或假,是或否。其它的任何事物,⽐如字符、数据和图⽚,必须要以⼆进制的形式来表现,以供计算机处理。
简单来说,字符编码是⼀种可以指⽰电脑来将原始的 0 和 1 解释成实际字符的⽅式,在这些字符编码中,字符都以⼀串数字来表⽰。
字符编码⽅案有很多种,⽐如 ASCII、ANCI、Unicode 等等。下⾯是 ASCII 编码的⼀个例⼦。
字符            ⼆进制
A              01000001
B              01000010
在 Linux 中,命令⾏⼯具 iconv ⽤来将使⽤⼀种编码的⽂本转化为另⼀种编码。
你可以使⽤ file 命令,并添加 -i 或 --mime 参数来查看⼀个⽂件的字符编码,这个参数可以让程序像下⾯的例⼦⼀样输出字符串的 mime (Multipurpose Internet Mail Extensions) 数据:
$ file -i Car.java
$ file -i CarDriver.java
在 Linux 中查看⽂件的编码
iconv ⼯具的使⽤⽅法如下:
$ iconvoption
$ iconv options -f from-encoding -tto-encoding inputfile(s) -o outputfile
在这⾥,-f 或 --from-code 表明了输⼊编码,⽽ -t 或 --to-encoding 指定了输出编码。
为了列出所有已有编码的字符集,你可以使⽤以下命令:
$ iconv -l
列出所有已有编码字符集
将⽂件从 ISO-8859-1 编码转换为 UTF-8 编码
下⾯,我们将学习如何将⼀种编码⽅案转换为另⼀种编码⽅案。下⾯的命令将会将 ISO-8859-1 编码转换为 UTF-8 编码。
考虑如下⽂件 input.file,其中包含这⼏个字符:
����
我们从查看这个⽂件的编码开始,然后来查看⽂件内容。***,我们可以把所有字符转换为 UTF-8 编码。
在运⾏ 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 中将 ISO-8859-1 转化为 UTF-8
unicode编码转换二进制注意:如果输出编码后⾯添加了 //IGNORE 字符串,那些不能被转换的字符将不会被转换,并且在转换后,程序会显⽰⼀条错误信息。
好,如果字符串 //TRANSLIT 被添加到了上⾯例⼦中的输出编码之后 (UTF-8//TRANSLIT),待转换的字符会尽量采⽤形译原则。也就是说,如果某个字符在输出编码⽅案中不能被表⽰的话,它将会被替换为⼀个形状⽐较相似的字符。
⽽且,如果⼀个字符不在输出编码中,⽽且不能被形译,它将会在输出⽂件中被⼀个问号标记 ? 代替。
将多个⽂件转换为 UTF-8 编码
回到我们的主题。如果你想将多个⽂件甚⾄某⽬录下所有⽂件转化为 UTF-8 编码,你可以像下⾯⼀样,编写⼀个简单的 shell 脚本,并将其命名为 encoding.sh:
#!/bin/bash
### 将 values_here 替换为输⼊编码
FROM_ENCODING="value_here"
### 输出编码 (UTF-8)
TO_ENCODING="UTF-8"
### 转换命令
CONVERT=" iconv  -f  $FROM_ENCODING  -t  $TO_ENCODING"
### 使⽤循环转换多个⽂件
forfilein*.txt; do
$CONVERT"$file"-o"${file%.txt}.verted"
done
exit 0
保存⽂件,然后为它添加可执⾏权限。在待转换⽂件 (*.txt) 所在的⽬录中运⾏这个脚本。
$ chmod  +x  encoding.sh
$ ./encoding.sh
重要事项:你也可以使这个脚本变得更通⽤,⽐如转换任意特定的字符编码到另⼀种编码。为了达到这个⽬的,你只需要改变
FROM_ENCODING 及 TO_ENCODING 变量的值。别忘了改⼀下输出⽂件的⽂件名 "${file%.txt}.verted".
若要了解更多信息,可以查看 iconv 的⼿册页 (man page)。
$ man iconv
将这篇指南总结⼀下,理解字符编码的概念、了解如何将⼀种编码⽅案转换为另⼀种,是⼀个电脑⽤户处理⽂本时必须要掌握的知识,程序员更甚。
***,你可以在下⾯的评论部分中与我们联系,提出问题或反馈。
【编辑推荐】
【责任编辑:枯⽊ TEL:(010)68476606】
点赞 0

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。