在Linux下可以使用iconv工具进行文本文件的编码转换操作。
以下用示例来说明:
1, 当前系统环境变UTF-8编码时
[gbasedbt@centos7 iconv]$ echo $LANG
en_US.UTF-8
新建的文本文件格式也为UTF-8
[gbasedbt@centos7 iconv]$ more ts_utf8.txt
时间序列存储在容器中,容器类型似于表,时间序列的数据是连续的。容器池是一组容器的集合。
滚动窗口容器的概念,相关活动窗口、休眠窗口,分区销毁。
数据类型和系统表:
数据类型包括:CalendarPattern、Calendar、TimeSeries
系统表包括:CalendarPatterns、 CalendarTable、TSInstanceTable、TSContainerTable
[gbasedbt@centos7 iconv]$ file ts_utf8.txt
ts_utf8.txt: UTF-8 Unicode text
注:file 命令可用于评估文本文件的类型
2, 使用iconv命令将文本文件的编码转换为gbk
[gbasedbt@centos7 iconv]$ iconv -f utf-8 -t gbk -o ts_utf8_2_gbk.txt ts_utf8.txt
说明:
-f 表示源文件编码格式
-t 表示目标文件编码格式
-o 表示输出文件的名称
3, 转换前后的文件大小
因为utf-8编码中,汉字的编码一般为3个字节,而gbk中一般为2个字节。故会有所差别。
[gbasedbt@centos7 iconv]$ ll
total 8
-rw-rw-r-- 1 gbasedbt gbasedbt 292 Jun 18 19:59 ts_utf8_2_gbk.txt
-rw-rw-r-- 1 gbasedbt gbasedbt 388 Jun 18 19:57 ts_utf8.txt
4, 转换后的文件编码及内容显示
在Linux操作系统中,需要环境中的LANG与文本文件编码兼容才能友好显示。
如果使用的是xterm之类的终端,还需要设置终端的字符集与LANG匹配,才能友好显示。
[gbasedbt@centos7 iconv]$ echo $LANG
zh_CN.GB18030
显示文本内容,评估文本文件的类型
[gbasedbt@centos7 iconv]$ more ts_utf8_2_gbk.txt
时间序列存储在容器中,容器类型似于表,时间序列的数据是连续的。容器池是一组容器的集合。
滚动窗口容器的概念,相关活动窗口、休眠窗口,分区销毁。
数据类型和系统表:
数据类型包括:CalendarPattern、Calendar、TimeSeries
系统表包括:CalendarPatterns、 CalendarTable、TSInstanceTable、TSContainerTable
[gbasedbt@centos7 iconv]$ file ts_utf8_2_gbk.txt
ts_utf8_2_gbk.txt: ISO-8859 text
这里显示的文本文件类型是ISO-8859,而非UTF-8。
同样的,我们也可以将GBK转换成UTF-8格式
[gbasedbt@centos7 iconv]$ echo $LANG
zh_CN.GB18030
[gbasedbt@centos7 iconv]$ iconv -f gbk -t utf-8 -o ts_utf8_2_gbk_2_utf8.txt ts_utf8_2_gbk.txt
[gbasedbt@centos7 iconv]$ ll
总用量 12
-rw-rw-r-- 1 gbasedbt gbasedbt 388 6月 18 20:33 ts_utf8_2_gbk_2_utf8.txt
-rw-rw-r-- 1 gbasedbt gbasedbt 292 6月 18 19:59 ts_utf8_2_gbk.txt
-rw-rw-r-- 1 gbasedbt gbasedbt 388 6月 18 19:57 ts_utf8.txt
[gbasedbt@centos7 iconv]$ file ts_utf8_2_gbk_2_utf8.txt
ts_utf8_2_gbk_2_utf8.txt: UTF-8 Unicode text
可以注意到生成的两个UTF-8文件的编码是一致的。