若是你需要在Linux中操做windows下的文件linux操作系统安装,这么你可能会经常碰到文件编码转换的问题。Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下边介绍一下,在Linux中怎样查看文件的编码及怎样进行对文件进行编码转换。linux
查看文件编码
在Linux中查看文件编码才能经过如下几种形式:
1.在Vim中就能直接查看文件编码
:setfileencoding
便可显示文件编码格式。
若是你只是想查看其它编码格式的文件或则想解决用Vim查看文件乱码的问题linux 文件utf 8编码,这么你还能在
~/.vimrc文件中添加如下内容:
setencoding=utf-8fileencodings=ucs-bom,utf-8,cp936
这样,就可让vim手动辨识文件编码(才能手动辨识UTF-8或则GBK编码的文件)linux软件工程师,虽然就是根据fileencodings提供的编码列表尝试,若是没有找到合适的编码,就用latin-1(ASCII)编码打开。
2.enca(若是你的系统中没有安装这个命令,还能用sudoyuminstall-yenca安装)查看文件编码
$encafilename
filename:Universaltransformationformat8bits;UTF-8
CRLFlineterminators
需要说明一点的是,enca对个别GBK编码的文件辨识的不是挺好,辨识时会出现:
Unrecognizedencodingvim
文件编码转换
1.在Vim中直接进行转换文件编码,好比将一个文件转换成utf-8格式
:setfileencoding=utf-8
2.enconv转换文件编码,好比要将一个GBK编码的文件转换成UTF-8编码linux 文件utf 8编码,操做以下
enconv-Lzh_CN-xUTF-8filename
3.iconv转换,iconv的命令格式以下:
iconv-fencoding-tencodinginputfile
好比将一个UTF-8编码的文件转换成GBK编码
iconv-fGBK-tUTF-8file1-ofile2
Linux文件名编码转换
从Linux往windows拷贝文件或则从windows往Linux拷贝文件,有时会出现英文文件名乱码的状况,出现这些问题的原因是因为,windows的文件名英文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致,因而导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。
在Linux中专门提供了一种工具convmv进行文件名编码的转换,才能将文件名从GBK转换成UTF-8编码,或则从UTF-8转换到GBK。
首先看一下你的系统上是否安装了convmv,若是没安装的话用:
yum-yinstallconvmv
安装。
下边看一下convmv的具体用法:
convmv-f源编码-t新编码[选项]文件名
常常使用参数:
-r递归处理子文件夹
--notest真正进行操做,请注意在默认状况下是不对文件进行真实操做的,而只是试验。
--list显示全部支持的编码
--unescap才能作一下通配符,好比把%20弄成空格
好比俺们有一个utf8编码的文件名,转换成GBK编码,命令以下:
convmv-fUTF-8-tGBK--notestutf8编码的文件名
这样转换以后"utf8编码的文件名"会被转换成GBK编码(只是文件名编码的转换,文件内容不会发生变化)。windows
dos和unix文本文件格式工具
dos和unix文本文件格式主要是回车的编码方法不一样。原先unix下的回车是用0x0A表示的,而dos下的回车则是0x0D0A。才能是使用ultraedit中的hex编辑查看。在实际工做中遇见的问题。openldap的启动文件需要从配置文件slapd.conf获取数据文件的目录。·LANG=Cgrep'^directory[[:space:]]+[[:print:]]'/etc/openldap/slapd_pri.conf|seds,^directory,,·在dos格式下仍然不能正确获取到directroy的值。编码
转换方式:1.在windows中才能ultraedit保存为unix格式。在linux中可使用dos2unix工具进行转换。spa
2.用vim转换,用vim打开文本文件,用setfileformat=unix转换
vimtest.txt
:setfileformat=unix
:wqunix