文件内容编码
-
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试下.
文件名编码 文件名乱码
默认文件名编码和语系编码一致. 如语系是gbk, 则文件名编码也是gbk, 如果语系是utf8, 则文件名编码默认也是utf8
如果文件名在当前语系下查看没有乱码,则该文件名的编码与当前LANG一致.可直接通过echo $LANG 查看该文件名的编码
小结:
utf8的文件名编码以gbk显示像是一些不认识的中文
gbk的编码以utf8显示则是一些?和一些"口"字
在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
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上传文件名是gbk编码.无论语系.
FTP列表中对文件名使用的编码是gbk,无论语系.
如果ftp上传的是压缩包, 经shou55测试,: 好像和压缩包的类型还有关系. 如果是zip,则解压的文件名与语系有关.
阅读(4309) | 评论(0) | 转发(0) |