Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60956
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 96
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-26 12:24
文章分类

全部博文(9)

文章存档

2016年(6)

2015年(1)

2014年(2)

我的朋友

分类: 系统运维

2015-05-08 13:31:05

文件内容编码
  • linux下查看文件内容编码(文件内容编码即文件编码):
方案一:
file 文件名    #可查看到文件编码格式
如果显示的是ISO-8859 text,则可以理解为gbk或gb2312
如果显示的是ASCII text或ASCII English text, 则表示为纯ASCII编码的文件

方案二:
enca 文件名    #如果enca没有安装,可用yum install -y enca先安装
如果显示的是7bit ASCII characters, 则表示为纯ASCII编码的文件

方案三(个人不推荐,感觉很麻烦,我们vps默认是gbk的语系,还要改语系,麻烦!!且感觉不是很准确):
vim 打开文件    #注意是vim,不是vi,如果vi做了别名到vim则一样,vim打开后如图
在页面的最下方有文件名,行号,列号,全部这样的字样,而vi是没有的. 在LANG设置成utf8的前提下(不是utf8的语系则查看不到):使用
:set fileencoding
可查看到文件的编码.

  • 文件内容编码转换(文件编码转换):
iconv -f utf-8 -t gbk aaa.txt > bbb.txt    #注意新旧2个文件名不要相同,否则会变成大小为0的空文件.
iconv -f utf-8 -t gb2312 aaa.txt >bbb.txt    #这个命令读取aaa.txt文件,从原来的utf-8编码转换为gb2312编码,其输出定向到bbb.txt文件。
如果在操作过程中出现    iconv: 未知 63 处的非法输入序列
这样的错误,请将gb2312改成gbk试下.


文件名编码  文件名乱码

  • linux下查看文件名编码:
默认文件名编码和语系编码一致. 如语系是gbk, 则文件名编码也是gbk, 如果语系是utf8, 则文件名编码默认也是utf8
如果文件名在当前语系下查看没有乱码,则该文件名的编码与当前LANG一致.可直接通过echo $LANG 查看该文件名的编码
小结:
utf8的文件名编码以gbk显示像是一些不认识的中文
gbk的编码以utf8显示则是一些?和一些"口"字
  • 文件系统对文件名编码的影响:
        Linux文件系统
在Linux大多用的是ext2 、ext3、ext4、reiserfs等文件系统 , 对于这些文件系统 , 不需要指定文件系统的编码,其实Linux mount挂载文件也没有这个功能;这些Linux文件系统,如果出现编码问题,一般是通过export LANG来指定;即Linux文件系统文件名的编码一般取决于语系
        win文件系统
在win下常用的是fat32和ntfs这2种文件系统.NTFS and VFAT (for long filenames) use UTF-16 internally to store filenames , 即win中常用的这2种文件系统对文件名的编码一般是utf        
  • 对比:win下文件名编码:
windows的文件名中文编码默认为UTF
  • 文件名编码转换:
yum install convmv    #如果没有安装,可先yum安装.  如果yum没找到,可以这样处理:
wget
rpm -ivh convmv-1.15-1.el6.rf.noarch.rpm

convmv -f utf-8 -t gbk --notest *.mp3    #将文件名编码从gbk转换到utf8,默认是只测试不实际转换,如果要实际转换需要加上notest参数
-r    #该参数表递归处理.
  • FTP上传对文件编码及文件名编码的影响:
FTP上传文件名是gbk编码.无论语系.
FTP列表中对文件名使用的编码是gbk,无论语系.
如果ftp上传的是压缩包, 经shou55测试,: 好像和压缩包的类型还有关系. 如果是zip,则解压的文件名与语系有关.
阅读(4309) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~