天天看点

ubuntu 字符集与乱码

以前一直使用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

继续阅读