linux下經常遇到的編碼問題如果你需要在linux中操作windows下的檔案,那麼你可能會經常遇到檔案編碼轉換的問題。windows中預設的檔案格式是gbk(gb2312),而linux一般都是utf-8。
檢視編碼的方法
方法一:filefilename
方法二:在vim中可以直接檢視檔案編碼
:setfileencoding
如果你只是想檢視其它編碼格式的檔案或者想解決用vim檢視檔案亂碼的問題,那麼你可以在
~/.vimrc檔案中新增以下內容:
setencoding=utf-8fileencodings=ucs-bom,utf-8,cp936
這樣,就可以讓vim自動識別檔案編碼(可以自動識別utf-8或者gbk編碼的檔案),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ascii)編碼開啟
檔案編碼轉換
多平臺方法:
iconv提供標準的程式和api來進行編碼轉換;
convert_encoding.py基於python的文字檔案轉換工具;
decodeh.py提供演算法和模組來談測字元的編碼;
linux下檔案編碼轉換:
方法一:
在vim中直接進行轉換檔案編碼,比如將一個檔案轉換成utf-8格式
:setfileencoding=utf-8
或者
11)設定檔案集合,即要對哪些檔案進行操作,可以使用萬用字元,比如我通常是對c/c++源程式進行編碼轉換
:args*.h*.cpp
2)給出要在每個檔案上執行的命令,這裡是轉換編碼:
:argdosetfenc=utf-8|update
方法二:
iconv轉換
5.案例:
假如說我們將windows下的一個utf-8的檔案傳到linux環境下,linux環境下的系統編碼是gb18030,我們cat的時候就會出現亂碼,這個時候就應該想到轉碼了,下面我們來進行試驗:
我們將windows下一個名為utf-8.sh的檔案傳到linux系統中,其中utf-8.sh的內容如下:
我是中文編碼utf-8模式~
而linux系統的系統語言設定為:
[root@sor-syszy]#cat/etc/sysconfig/i18n
lang=zh_cn.gb18030
sysfont="latarcyrheb-sun16"
這個時候檢視一下檔案的內容及編碼:
[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]#
這個時候我們就需要轉換編碼了,記得使用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
convmv就是更改檔名編碼方式的一個工具。
比如
sudoconvmv-fgbk-tutf-8-r–notest/home
就是將/home目錄下原來檔名是gbk編碼方式的全部改為utf-8格式的。這裡-f後面為原來的編碼方式,-t後面是要更改為的編碼方式,-r表示這個目錄下面的所有檔案,–notest表示馬上執行,而不是僅僅測試而已。另外這命令好像要root才能執行,因此要加上sudo。
linux下經常遇到的編碼問題如果你需要在linux中操作windows下的檔案,那麼你可能會經常遇到檔案編碼轉換的問題。windows中預設的檔案格式是gbk(gb2312),而linux一般都是utf-8。
檢視編碼的方法
方法一:filefilename
方法二:在vim中可以直接檢視檔案編碼
:setfileencoding
如果你只是想檢視其它編碼格式的檔案或者想解決用vim檢視檔案亂碼的問題,那麼你可以在
~/.vimrc檔案中新增以下內容:
setencoding=utf-8fileencodings=ucs-bom,utf-8,cp936
這樣,就可以讓vim自動識別檔案編碼(可以自動識別utf-8或者gbk編碼的檔案),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ascii)編碼開啟
檔案編碼轉換
多平臺方法:
iconv提供標準的程式和api來進行編碼轉換;
convert_encoding.py基於python的文字檔案轉換工具;
decodeh.py提供演算法和模組來談測字元的編碼;
linux下檔案編碼轉換:
方法一:
在vim中直接進行轉換檔案編碼,比如將一個檔案轉換成utf-8格式
:setfileencoding=utf-8
或者
11)設定檔案集合,即要對哪些檔案進行操作,可以使用萬用字元,比如我通常是對c/c++源程式進行編碼轉換
:args*.h*.cpp
2)給出要在每個檔案上執行的命令,這裡是轉換編碼:
:argdosetfenc=utf-8|update
方法二:
iconv轉換
5.案例:
假如說我們將windows下的一個utf-8的檔案傳到linux環境下,linux環境下的系統編碼是gb18030,我們cat的時候就會出現亂碼,這個時候就應該想到轉碼了,下面我們來進行試驗:
我們將windows下一個名為utf-8.sh的檔案傳到linux系統中,其中utf-8.sh的內容如下:
我是中文編碼utf-8模式~
而linux系統的系統語言設定為:
[root@sor-syszy]#cat/etc/sysconfig/i18n
lang=zh_cn.gb18030
sysfont="latarcyrheb-sun16"
這個時候檢視一下檔案的內容及編碼:
[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]#
這個時候我們就需要轉換編碼了,記得使用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表示馬上執行,而不是僅僅測試而已。另外這命令好像要root才能執行,因此要加上sudo。