以前一直使用windows 操作系统工作后来迁移到ubuntu上但是之前在windows下保存的文档(默认编码gb2312)到ubuntu上全部乱码(默认编码utf-8),记得可以在ubuntu上给gedit(文本编辑器)更改字符集顺序,现在觉得太麻烦了索性把文本编码全改成utf-8算了 ~~!!
1 cat 文本乱码,enca 查看文本编码为gb2312,可使用iconv来转换编码
$ cat haproxy-log.path.txt
־
vi /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-m 0"
syslogd
/etc/init.d/syslog restart
ȻͿԿ
$ enca haproxy-log.path.txt
Simplified Chinese National Standard; GB2312
CRLF line terminators
$ iconv -f GB2312 -t utf8 haproxy-log.path.txt
#以下为输出
把SYSLOGD_OPTIONS="-m 0" 改成 SYSLOGD_OPTIONS="-r -m 0"
让syslogd接受远程的日志输出
然后就可以看到日志输出了
#输出结束
2 iconv --help
$ iconv --help
用法 iconv [选项...] [文件...]
转换给定文件的编码。
输入/输出格式规范
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码
信息
-l, --list 列举所有已知的字符集
输出控制
-c 从输出中忽略无效的字符
-o, --output=FILE 输出文件
-s, --silent 关闭警告
--verbose 打印进度信息
-?, --help 给出该系统求助列表
--usage 给出简要的用法信息
-V, --version 打印程序版本号
长选项的强制或可选参数对对应的短选项也是强制或可选的。
3 enca/econv 可以更方便的转换文本编码
#安装enca
apt-get install enca
#查询单个文件的编码
enca haproxy-log.path.txt
#转换单个文件的编码
enca -L none -x utf-8
enconv haproxy-log.path.txt
vi /etc/sysconfig/syslog
把SYSLOGD_OPTIONS="-m 0" 改成 SYSLOGD_OPTIONS="-r -m 0"
让syslogd接受远程的日志输出
/etc/init.d/syslog restart
#当然还可以批量转换
find haproxy/ -name '*.txt' | xargs enconv
扩展
<a href="http://www.iteye.com/topic/97803" target="_blank">字符集与编码</a>
本文转自 dongnan 51CTO博客原文链接http://blog.51cto.com/dngood/726746