linux相关编码的问题 iconv

Zss 发表于:

正如和python中一样常见一些编码的问题,python中可以使用编码解码来解决此类的问题,decode解码,encode编码

那么在linux中实际上也是有编码的命令的,那么就是iconv

命令的格式:

iconv [选项…] [文件…]

输入/输出格式规范:
-f, –from-code=名称    解码 相当decode
-t, –to-code=名称         编码 相当于encode
-l, –list                    列举所有已知的字符集

输出控制:
-c                           从输出中忽略无效的字符
-o, –output=FILE        输出文件
-s, –silent                   关闭警告

 

当我使用curl到qq的时候,发现返回的中文存在乱码的情况,因为qq的网页使用的是gbk,而系统默认的是utf-8,那么我需要将其gbk解码后编码成utf-8

[root@zss ~]# curl www.qq.com|iconv -f ‘gbk’ -t ‘utf-8’

上述也表示了-f 参数作用为将文本使用gbk来解码, -t 将其文本再编码成utf-8

 

查看系统的,默认编码

[root@zss ~]# locale
LANG=en_US.UTF-8
LC_CTYPE=”en_US.UTF-8″
LC_NUMERIC=”en_US.UTF-8″
LC_TIME=”en_US.UTF-8″
LC_COLLATE=”en_US.UTF-8″
LC_MONETARY=”en_US.UTF-8″
LC_MESSAGES=”en_US.UTF-8″
LC_PAPER=”en_US.UTF-8″
LC_NAME=”en_US.UTF-8″
LC_ADDRESS=”en_US.UTF-8″
LC_TELEPHONE=”en_US.UTF-8″
LC_MEASUREMENT=”en_US.UTF-8″
LC_IDENTIFICATION=”en_US.UTF-8″
LC_ALL=

 

修改编码:

修改/etc/sysconfig/i18n,如改成中文编码:

LANG=en_US.UTF-8

改为

LANG=”zh_CN.GBK”

然后在不重启的情况下重新加载i18n文件

/etc# source /etc/sysconfig/i18n

 

1.将gb2312输出成utf-8

iconv -f gb2312 -t utf-8 file1 > file2
#或
iconv -f gb2312 -t utf-8 file1 -o file2

2.将文件file1转码,转后文件输出到fil2中

iconv -f GBK -t UTF-8 file1 -o file2 

3.将文件转换成utf8格式

iconv abc.sh -o utf8 

4.文件GBK编码转UTF-8编码

iconv test.txt -f GBK -t UTF-8 -o test2.txt