Centos下文字檔格式轉碼解決

來源:互聯網
上載者:User

Centos下文字檔格式轉碼解決 最近遇到伺服器網站的目錄下的所有檔案的編碼全是gb2312,直接用cat或者vim開啟顯示都是亂碼,網頁顯示出來當然也全是亂碼,所以要解決怎麼把目錄下的所有檔案(包括子檔案夾裡的檔案)由gb2312轉碼成utf-8的問題。網上一頓搜,總共用了三種方法,最後終於把問題解決了。 第一種方法是利用vi編輯器,開啟需要轉碼的檔案。:set fileencoding這樣可以查看檔案當前的編碼格式。:set fileencoding=utf-8說這樣能把當前的檔案轉碼成utf-8。但是失敗了,直接開啟還是顯示亂碼,更別說瀏覽器瀏覽的頁面了。而且即使能轉碼成功,網站目錄下的文字檔那麼多,不可能一個個挨個開啟然後這樣設定吧,工作量巨大。 第二種方法是利用iconv。iconv系統預設就已經安裝了的。通過命令:Shell代碼  iconv -f gb2312 -t utf-8 abc.html  這樣確實把abc.html的編碼轉換成了utf-8。這樣是將轉換後的文本顯示在了終端上,也可以:Shell代碼  iconv -f gb2312 -t utf-8 abc.html -o abc.html  用轉碼後的檔案覆蓋原檔案,畢竟這才是最後想達到的目的。 好了,現在就可以對整個目錄下(包括子目錄下)的所有文字檔進行轉碼了:Shell代碼  find -type f -name "*.html" -exec iconv -f gb2312 -t utf-8 {} -o {} \;  通過-exec將find命令的每個結果帶入後面iconv的{}內,轉換css和javascript檔案類似。但是悲劇的是輸出很多錯誤提示。大概就是非法輸入,也就是很多html檔案裡面的字元不對,用iconv轉碼出現錯誤。尋思大概不是所有的html檔案的編碼都是gb2312,所以把-f gb2312這個參數去掉,變成這樣:Shell代碼  find -type f -name "*.html" -exec iconv -t utf-8 {} -o {} \;   但是遺憾的是錯誤依舊。所有用iconv這種辦法還是行不通。 第三種方法是用enca。Centos默然沒有安裝enca,先下載然後安裝:Shell代碼  wget http://pkgs.repoforge.org/enca/enca-1.10-1.el6.rf.x86_64.rpm   安裝:Shell代碼  rpm -ivh enca-1.10-1.el6.rf.x86_64.rpm  enca的用法:enca -L zh_CN file    #查看file的編碼格式enca -L zh_CN -x UTF-8 file   #將file轉換成utf8的編碼格式enca -L zh_CN -x UTF-8 file1 file2   #轉換之後存成file2檔案,不覆蓋file1好了,接下來就是將目錄下的所有文字檔轉成成utf8格式: Shell代碼  find -type f -name "*.html" -exec enca -L zh_CN -x UTF-8 {} \;  這樣轉換以後發現只有一兩個檔案顯示原檔案由於未知格式轉碼失敗,其它的的html檔案都轉碼成功了,哈哈。接下來就是將htm,css,js尾碼的檔案也用同樣的辦法進行轉碼就行了。哎,問題可算解決了。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.