回覆列表
  • 1 # 茶花女稻花似水浮生

    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。

  • 中秋節和大豐收的關聯?
  • 水火箭的原理及製作過程?