linux下文件編碼格式轉(zhuǎn)換方法(gb18030/utf-8)
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)奎文免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
在 Linux 做開(kāi)發(fā)或者系統(tǒng)管理遇到亂碼是經(jīng)常的事情,主要windows下中文的默認(rèn)編碼是bg2312,而 linux下是utf-8。很多時(shí)候 涉及到和windows平臺(tái)系統(tǒng)的通信免不了編碼的轉(zhuǎn)化,可能大部分人都用iconv庫(kù)函數(shù)(包含在glib中)和iconv命令來(lái)執(zhí)行編碼轉(zhuǎn)換,即:
iconv -f gb18030 -t utf-8 file1.txt -o file2.txt
說(shuō)實(shí)話這個(gè)命令不好使,一方面容易重復(fù)轉(zhuǎn)換,另一方面不支持通配符,無(wú)法成批轉(zhuǎn) 換,文件少了還好說(shuō),要是一大堆文件豈不是要累死?
今天我要推薦的是另一個(gè) Shell 下編碼轉(zhuǎn)換工具enca。用它不僅可以轉(zhuǎn)換編碼,還可以查看文件的原始編碼,而且還支持成批轉(zhuǎn)換。使用上也比iconv方便一些。安裝enca很簡(jiǎn)單,一般用源安裝就行了,enca用法如下:
enca -L 當(dāng)前語(yǔ)言 文件名
enca -L zh_CN file //檢查文件的編碼
enca -L 當(dāng)前語(yǔ)言 -x 目標(biāo)編碼 文件名
enca -L zh_CN -x UTF-8 file //將文件編碼轉(zhuǎn)換為”UTF-8″編碼
enca -L zh_CN -x UTF-8 file1 file2 //如果不想覆蓋原文件可以這樣
除了有檢查文件編碼的功能以外,”enca”還有一個(gè)好處就是如果文件本來(lái)就是你要轉(zhuǎn)換的那種編碼,它不會(huì)報(bào)錯(cuò),還是會(huì)print出結(jié)果來(lái), 而”iconv”則會(huì)報(bào)錯(cuò)。這對(duì)于腳本編寫(xiě)是比較方便的事情。
i).在 Vim 中可以直接查看文件編碼(shift + :)輸入set fileencoding 即可顯示文件編碼格式。
如果你只是想查看其它編碼格式的文件或者想解決用 Vim 查看文件亂碼的問(wèn)題,那么你可以在 ~/.vimrc 文件中添加以下內(nèi)容: set
encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936 這樣, 就可以讓 vim 自動(dòng)識(shí)別文件編碼
(可以自動(dòng)識(shí)別 UTF-8或者 GBK 編碼的文件) ,其實(shí)就是依照 fileencodings
提供的編碼列表嘗試,如果沒(méi)有找到合適的編碼,就用 latin-1(ASCII)編碼打開(kāi)。
ii). enca (需要安裝)查看文件編碼:$enca filename filename: Universal
transformation format 8 bits; UTF-8 CRLF line terminators 需要說(shuō)明一點(diǎn)的是,enca
對(duì)某些 GBK 編碼的文件識(shí)別的不是很好,識(shí)別時(shí)會(huì)出現(xiàn): Unrecognized encoding
iii)還有一種很簡(jiǎn)單的方式,file 文件名 可以查看非elf文件的編碼格式
在Linux中查看文件編碼可以通過(guò)以下幾種方式:1.在Vim中可以直接查看文件編碼:setfileencoding,即可顯示文件編碼格式。2.enca(如果你的系統(tǒng)中沒(méi)有安裝這個(gè)命令,可以用sudoyuminstall-yenca安裝)查看文件編碼
下面介紹一下,在Linux中如何查看文件的編碼及如何進(jìn)行對(duì)文件進(jìn)行編碼轉(zhuǎn)換。
一,查看文件編碼:在Linux?中查看文件編碼可以通過(guò)以下幾種方式:
1.在Vim中可以直接查看文件編碼:setfileencoding即可顯示文件編碼格式。如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問(wèn)題,那么你可以在~/.vimrc文件中添加以下內(nèi)容:setencoding=utf-8fileencodings=ucs-bom,utf-8,cp936這樣,就可以讓vim自動(dòng)識(shí)別文件編碼(可以自動(dòng)識(shí)別UTF-8或者GBK編碼的文件),其實(shí)就是依照f(shuō)ileencodings提供的編碼列表嘗試,如果沒(méi)有找到合適的編碼,就用latin-1(ASCII)編碼打開(kāi)。
2.enca(如果你的系統(tǒng)中沒(méi)有安裝這個(gè)命令,可以用sudoyuminstall-yenca安裝)查看文件編碼#36;encafilenamefilename:Universaltransformationformat8bits;UTF-8CRLFlineterminators需要說(shuō)明一點(diǎn)的是,enca對(duì)某些GBK編碼的文件識(shí)別的不是很好,識(shí)別時(shí)會(huì)出現(xiàn):Unrecognizedencoding
二,文件編碼轉(zhuǎn)換
1.在Vim中直接進(jìn)行轉(zhuǎn)換文件編碼,比如將一個(gè)文件轉(zhuǎn)換成utf-8格式:setfileencoding=utf-8??2.iconv轉(zhuǎn)換,iconv的命令格式如下:輸入/輸出格式規(guī)范:-f,--from-code=名稱原始文本編碼-t,--to-code=名稱輸出編碼信息:??列舉所有已知的字符集輸出控制:-c從輸出中忽略無(wú)效的字符-o,--output=FILE輸出文件Svn8.Com-s,--s??ilent關(guān)閉警告--verbose打印進(jìn)度信息-?,--help給出該系統(tǒng)求助列表--usage給出簡(jiǎn)要的用法信息-V,--version打印程序版本號(hào)??例子:iconv-futf-8-tgb2312aaa.txtbbb.txt這個(gè)命令讀取aaa.txt文件,從utf-8編碼轉(zhuǎn)換為gb2312編碼,其輸出定向到bbb.txt文件。iconv-fencoding-tencodinginputfile比如將一個(gè)UTF-8編碼的文件轉(zhuǎn)換成GBK編碼iconv-fGBK-tUTF-8file1-ofile2
3.enconv轉(zhuǎn)換文件編碼比如要將一個(gè)GBK編碼的文件轉(zhuǎn)換成UTF-8編碼,操作如下enconv-Lzh_CN-xUTF-8filename