Linux查看文件編碼格式及文件編碼轉換[轉]


原文地址:http://www.cnblogs.com/hnrainll/archive/2011/07/22/2113557.html

如果你需要在Linux中操作windows下的文件,那么你可能會經常遇到文件編碼轉換的問題。Windows中默認的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下面介紹一下,在Linux中如何查看文件的編碼及如何進行對文件進行編碼轉換。

查看文件編碼,在Linux中查看文件編碼可以通過以下幾種方式:


1.在Vim 中可以直接查看文件編碼

Shell代碼

  1. :set fileencoding

即可顯示文件編碼格式。
如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那么你可以在
~/.vimrc 文件中添加以下內容:

Shell代碼

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

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

2. enca (如果你的系統中沒有安裝這個命令,可以用sudo yum install-y enca 安裝 )查看文件編碼
$ enca filename
filename: Universal transformation format 8 bits; UTF-8
CRLF line terminators
需要說明一點的是,enca對某些GBK編碼的文件識別的不是很好,識別時會出現:
Unrecognized encoding
文件編碼轉換
1.在Vim中直接進行轉換文件編碼,比如將一個文件轉換成utf-8格式

Shell代碼

  1. :set fileencoding=utf-8

2. enconv轉換文件編碼,比如要將一個GBK編碼的文件轉換成UTF-8編碼,操作如下
enconv -L zh_CN -x UTF-8 filename
3. iconv 轉換,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如將一個UTF-8 編碼的文件轉換成GBK編碼
iconv -f GBK -t UTF-8 file1 -o file2

 

Linux 文件名編碼轉換

從Linux 往windows拷貝文件 或者從windows往Linux 拷貝文件 ,有時會出現中文文件 名 亂碼的情況,出現這種問題的原因是因為,windows的文件 名 中文編碼 默認為GBK,而Linux 中默認文件 名 編碼 為UTF8,由於編碼 不一致,所以導致了文件 名 亂碼的問題,解決這個問題需要對文件 名 進行轉碼。
在Linux 中專門提供了一種工具convmv進行文件 名 編碼 的轉換 ,可以將文件 名 從GBK轉換 成UTF-8編碼 ,或者從UTF-8轉換 到GBK。
首先看一下你的系統上是否安裝了convmv,如果沒安裝的話用:
yum -y install convmv
安裝。
下面看一下convmv的具體用法:
convmv -f 源編碼 -t 新編碼 [選項] 文件 名
常用參數:
-r 遞歸處理子文件 夾
--notest 真正進行操作,請注意在默認情況下是不對文件 進行真實操作的,而只是試驗。
--list 顯示所有支持的編碼
--unescap 可以做一下轉義,比如把%20變成空格
比如我們有一個utf8編碼 的文件 名 ,轉換 成GBK編碼 ,命令如下:
convmv -f UTF-8 -t GBK --notest utf8編碼 的文件 名
這樣轉換 以后"utf8編碼 的文件 名 "會被轉換 成GBK編碼 (只是文件 名 編碼 的轉換 ,文件 內容不會發生變化)。
注意:不要在NTFS和FAT文件 系統中使用此命令,否則可能產生意外結果,如果要在Linux 中正確的顯示NTFS和 FAT的中文件名,可以通過mount參數來解決,具體方法查看一下man手冊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM