快速业务通道

Linux系统中关于文件编码以及编码转换

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-05
Windows中默认的文件格式是GBK(gb2312),当然也可以保存为UTF-8的,最简单的方法是用记事本的“另存为”就可以做到.
 
  为了与windows兼容,SecureCRT中文件编码的默认配置是“Default”,其实也就是GBK.如果我们将其更改为了“UTF-8″,那么我们查看从windows中scp过去的GBK文件就会变成乱码,需要进行转换,比较麻烦.
 
  不过有时候我们也需要进行编码的转换,比如这次我这次在建立cacti的模板的时候使用了中文,apache默认是UTF-8的编码,记录到mysql数据库中的就是UTF-8的编码了(奇怪的是,在mysql中使用“set names utf-8″看不到正确的中文,需要使用”hex()“函数来看二进制,数一下字符数量,看是不是utf-8………).而当我使用批量添加主机的脚本来添加新服务器信息到数据库后,发现在网页中出现了乱码.原因是在cli中使用脚本的话,中文是使用GBK的格式保存到数据库中的.于是变成了很郁闷的情况,无论将浏览器编码设置为”UTF-8″还是“GB2312″,总会有一部分中文是乱码的.
 
  解决的方法,不是将原来的模板的中文都转换成gb2312,就是要将以后添加的主机信息里面的中文转换成UTF-8.我比较喜欢UTF-8一点,我决定用后一种方法.
 
  linux里面转换编码的方法很多,google了一下,一般的人都是用“iconv”命令来进行转换.但是我需要在脚本里面判断文件的编码,“iconv”就不太适用.其实Linux里面还有另一个能进行编码转换,并比“iconv”功能强大的“enca”.
 
  debian中的安装:
 
  aptitude install enca
 
  使用方法:
 
  enca -L zh_CN file 检查文件的编码
 
  enca -L zh_CN -x UTF-8 file 将文件编码转换为"UTF-8"编码
 
  enca -L zh_CN -x UTF-8 < file1 > file2 如果不想覆盖原文件可以这样
 
  除了有检查文件编码的功能以外,“enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来,而“iconv”则会报错.这对于脚本编写是比较方便的事情.
 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号