Linux下文本文件编码转换

在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文件的编码是一致的。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值