乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      linux 文件編碼格式轉(zhuǎn)換

       昵稱1148510 2010-04-14
      2009-09-12 00:28
      如果你需要在Linux中操作windows下的文件,那么你可能會經(jīng)常遇到文件編碼轉(zhuǎn)換的問題。Windows中默認(rèn)的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下面介紹一下,在Linux中如何查看文件的編碼及如何進(jìn)行對文件進(jìn)行編碼轉(zhuǎn)換。
       

      查看文件編碼
      在Linux中查看文件編碼可以通過以下幾種方式:
      1.在Vim中可以直接查看文件編碼
      :set fileencoding
      即可顯示文件編碼格式。
      如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那么你可以在
      ~/.vimrc 文件中添加以下內(nèi)容:

      set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

      這樣,就可以讓vim自動識別文件編碼(可以自動識別UTF-8或者GBK編碼的文件),其實(shí)就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼打開。

       

      文件編碼轉(zhuǎn)換
      1.在Vim中直接進(jìn)行轉(zhuǎn)換文件編碼,比如將一個(gè)文件轉(zhuǎn)換成utf-8格式
      :set fileencoding=utf-8

       

      2. iconv 轉(zhuǎn)換,iconv的命令格式如下:
      iconv -f encoding -t encoding inputfile
      比如將一個(gè)UTF-8 編碼的文件轉(zhuǎn)換成GBK編碼
      iconv -f GBK -t UTF-8 file1 -o file2




      Linux對一個(gè)3G的文本進(jìn)行編碼轉(zhuǎn)換全過程

      本過程中涉及到的Linux的命令有:split, iconv, cat
      問題:有一個(gè)3G的文本a.txt,編碼格式為gbk,現(xiàn)在需要對其進(jìn)行轉(zhuǎn)換成為utf-8。
      難點(diǎn):iconv的轉(zhuǎn)換是在內(nèi)存中進(jìn)行的,因此3G大小的文本,無法進(jìn)行直接轉(zhuǎn)換。
      思路:先利用split進(jìn)行文件切分,然后對每一個(gè)字文件進(jìn)行ivonv轉(zhuǎn)換,最后進(jìn)行cat合并。
      1) ll -h a.txt 查看文件的大小,2.9G
      2) wc -l a.txt 查看文件的行數(shù),9千200萬行
      3) split -l 20000000 a.txt chunk 按照每個(gè)文件2千萬行進(jìn)行切割,共分成5個(gè)文件
      4) 進(jìn)行轉(zhuǎn)換
      iconv -f gbk -t utf-8 chunka > chunka_utf8 -c
      iconv -f gbk -t utf-8 chunkb > chunkb_utf8 -c
      iconv -f gbk -t utf-8 chunkc > chunkc_utf8 -c
      iconv -f gbk -t utf-8 chunkd > chunkd_utf8 -c
      iconv -f gbk -t utf-8 chunke > chunke_utf8 -c
      5) rm chunka chunkb chunkc chunkd chunke 刪除原文件
      6) cat chunk* > a.txt_utf8 進(jìn)行合并
      至此,工作完成


      二、
      批量文件編碼轉(zhuǎn)換
      本操作有風(fēng)險(xiǎn),請注意操作前備份文件。
      1.將原來所有編碼為gb2312的*.java文件轉(zhuǎn)換為編碼為utf-8的*.java.new文件
      for i in `find . -name "*.java"`; do iconv -f gb2312 -t utf-8 $i -o $i.new; done
      2.將*.java.new文件的.new擴(kuò)展名去除
      find . -name "*.new" | sed 's/\(.*\).new$/mv "&" "\1"/' | sh

      三、
      linux下有許多方便的小工具來轉(zhuǎn)換編碼,
      文本內(nèi)容轉(zhuǎn)換   iconv
      文件名轉(zhuǎn)換     convmv
      mp3標(biāo)簽轉(zhuǎn)換    python-mutagen

      四、
      用法: iconv [選項(xiàng)...] [文件...]
      轉(zhuǎn)換給定文件的編碼。
      輸入/輸出格式規(guī)范:
      -f, --from-co
      de=名稱      原始文本編碼
      -t, --to-code=名稱         輸出編碼
      信息:
      -l, --list                     列舉所有已知的字符集
      輸出控制:
      -c                             從輸出中忽略無效的字符
      -o, --output=FILE    輸出文件
      -s, --silent               關(guān)閉警告
      --verbose            打印進(jìn)度信息
      -?, --help                 給出該系統(tǒng)求助列表
      --usage               給出簡要的用法信息
      -V, --version            打印程序版本號
      五、
      find default -type d -exec mkdir -p utf/{} \;
      find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \;
      這兩行命令將default目錄下的文件由GBK編碼轉(zhuǎn)換為UTF-8編碼,目錄結(jié)構(gòu)不變,轉(zhuǎn)碼后的文件保存在utf/default目錄下。

      六、
      Linux下文件名編碼批量轉(zhuǎn)換convmv
      由于FC將字符編碼統(tǒng)一成了UTF8,原來在gb18030下建立的ext3分區(qū)中的文件和目錄,一掛載到FC上就顯示成亂碼。google遍整個(gè)互聯(lián)網(wǎng),說對于目錄名和文件名,有一個(gè)叫convmv的軟件可以對其進(jìn)行自動轉(zhuǎn)換。
      今日下載了convmv,摸索了一套使用方法如下:
      convmv -f code1 -t code2 -r
      code1:分區(qū)原來使用的字符集編碼。支持gb2312、gbk、big5,不支持gb18030和big5-hkscs。
      code2:預(yù)轉(zhuǎn)換到的字符集編碼。對于FC,這里填寫utf8
      -r 參數(shù):轉(zhuǎn)換子目錄。
      dir:要轉(zhuǎn)換的目錄,當(dāng)前目錄用./表示。
      回車執(zhí)行,這個(gè)時(shí)候convmv會顯示執(zhí)行的結(jié)果,但不會真正對文件進(jìn)行修改。并提示使用--replace參數(shù)進(jìn)行修改。

      七、
      批量轉(zhuǎn)換文件的編碼
      for i in `find ./ -name *.htm` ; do echo $i;iconv -f gb18030 -t utf8 $i -o /tmp/iconv.tmp;mv /tmp/iconv.tmp $i; done
       
      find -name “*.htm“ \
      -exec iconv -f gb2312 -t utf8 ‘{}‘ -o /tmp/iconv.tmp \; \
      -exec mv /tmp/iconv.tmp ‘{}‘ \;

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多