编码

2018-09-04

查看linux系统本地化编码信息

locale

参数解释:

LC_COLLATE   确定文本排序顺序,
LC_CTYPE    确定字符分类,例如,此设置是tolower(3C)正常工作所必需的,
LC_MESSAGES 确定系统消息的语言(通常你不想改变它 - 阅读它们很重要即使您的环境以任何方式受到损害),
LC_MONETARY 确定货币符号和名称,
LC_NUMERIC  确定数字数据的表示(例如,使用“。”或“,”作为小数分隔符),
LC_TIME     确定日期和时间表示和设置(例如,一周的第一天),

查看系统已经安装的编码类型

locale -a

查看文件编码类型

file -i filename

或者使用enca

enca -L zh filename

编码转换

enca

# 将文件编码转换为”UTF-8″编码
enca -L zh_CN -x UTF-8 filename

# 如果不想覆盖原文件可以这样
enca -L zh_CN -x UTF-8 < filename > filename2

iconv

iconv -f gb2312 -t UTF-8 -o filename2 filename

# -f encoding :把字符从encoding编码开始转换。 
# -t encoding :把字符转换到encoding编码。 
# -l :列出已知的编码字符集合 
# -o file :指定输出文件 
# -c :忽略输出的非法字符 
# -s :禁止警告信息,但不是错误信息 
# --verbose :显示进度信息 
# -f和-t所能指定的合法字符在-l选项的命令里面都列出来了。 

convmv

convmv -f GBK -t UTF-8 -r --nosmart --notest <目标目录>

# -f from
# 
# -t to
# 
# --nosmart 如果已经是utf-8 忽略
# 
# -r 包含所有子目录
# 
# --notest 不加表示只列出有什么需要转换的,不做实际转换