linux怎么看文本的編碼格式?
linux下經(jīng)常遇到的編碼問題如果你需要在linux中操作windows下的文件,那么你可能會經(jīng)常遇到文件編碼轉(zhuǎn)換的問題。windows中默認的文件格式是gbk(gb2312),而linux一般都是utf-8。
查看編碼的方法
方法一:filefilename
方法二:在vim中可以直接查看文件編碼
:setfileencoding
如果你只是想查看其它編碼格式的文件或者想解決用vim查看文件亂碼的問題,那么你可以在
~/.vimrc文件中添加以下內(nèi)容:
setencoding=utf-8fileencodings=ucs-bom,utf-8,cp936
這樣,就可以讓vim自動識別文件編碼(可以自動識別utf-8或者gbk編碼的文件),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ascii)編碼打開
文件編碼轉(zhuǎn)換
多平臺方法:
iconv提供標準的程序和api來進行編碼轉(zhuǎn)換;
convert_encoding.py基于python的文本文件轉(zhuǎn)換工具;
decodeh.py提供算法和模塊來談測字符的編碼;
linux下文件編碼轉(zhuǎn)換:
方法一:
在vim中直接進行轉(zhuǎn)換文件編碼,比如將一個文件轉(zhuǎn)換成utf-8格式
:setfileencoding=utf-8
或者
11)設(shè)置文件集合,即要對哪些文件進行操作,可以使用通配符,比如我通常是對c/c++源程序進行編碼轉(zhuǎn)換
:args*.h*.cpp
2)給出要在每個文件上執(zhí)行的命令,這里是轉(zhuǎn)換編碼:
:argdosetfenc=utf-8|update
方法二:
iconv轉(zhuǎn)換
5.案例:
假如說我們將windows下的一個utf-8的文件傳到linux環(huán)境下,linux環(huán)境下的系統(tǒng)編碼是gb18030,我們cat的時候就會出現(xiàn)亂碼,這個時候就應(yīng)該想到轉(zhuǎn)碼了,下面我們來進行試驗:
我們將windows下一個名為utf-8.sh的文件傳到linux系統(tǒng)中,其中utf-8.sh的內(nèi)容如下:
我是中文編碼utf-8模式~
而linux系統(tǒng)的系統(tǒng)語言設(shè)置為:
[root@sor-syszy]#cat/etc/sysconfig/i18n
lang=zh_cn.gb18030
sysfont="latarcyrheb-sun16"
這個時候查看一下文件的內(nèi)容及編碼:
[root@sor-syszy]#fileutf-8.sh
utf-8.sh:utf-8unicodetext,withnolineterminators
[root@sor-syszy]#catutf-8.sh
锘挎垜鏄?腑鏂囩紪鐮乁tf-8妯″紡~[root@sor-syszy]#
[root@sor-syszy]#
這個時候我們就需要轉(zhuǎn)換編碼了,記得使用iconv
[root@sor-syszy]#iconv-futf-8-tgb18030utf-8.sh-ogb18030.sh
[root@sor-syszy]#catgb18030.sh
??我是中文編碼utf-8模式~[root@sor-syszy]#
[root@sor-syszy]#filegb18030.sh
gb18030.sh:non-isoextended-asciitext,withnolineterminators
[root@sor-syszy]#
convmv就是更改文件名編碼方式的一個工具。
比如
sudoconvmv-fgbk-tutf-8-r–notest/home
就是將/home目錄下原來文件名是gbk編碼方式的全部改為utf-8格式的。這里-f后面為原來的編碼方式,-t后面是要更改為的編碼方式,-r表示這個目錄下面的所有文件,–notest表示馬上執(zhí)行,而不是僅僅測試而已。另外這命令好像要root才能執(zhí)行,因此要加上sudo。