Linux系統中轉換編碼格式

2021-09-22 17:49:13 字數 2094 閱讀 8727

iconv -f 原始編碼 -t 需要的編碼 words.txt > 另存為的檔名

如果你需要在linux中操作windows下的檔案,那麼你可能會經常遇到檔案編碼轉換的問題。windows中預設的檔案格式是gbk(gb2312),而linux一般都是utf-8。下面介紹一下,在linux中如何檢視檔案的編碼及如何進行對檔案進行編碼轉換。

檢視檔案編碼,在linux中檢視檔案編碼可以通過以下幾種方式:

1.在vim 中可以直接檢視檔案編碼

shell**

:set fileencoding

即可顯示檔案編碼格式。 

如果你只是想檢視其它編碼格式的檔案或者想解決用vim檢視檔案亂碼的問題,那麼你可以在 

~/.vimrc 檔案中新增以下內容:

shell**

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**

: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手冊。

Linux 命令 iconv 轉換編碼

iconv是 linux 系統自帶的用於轉換檔案編碼的命令列工具。使用iconv help命令檢視命令幫助資訊 用法 iconv option.f encoding t encoding inputfile.或者 iconv l 將文字從一種編碼轉換成另一種編碼。控制輸入輸出格式的選項 f enco...

關於轉換編碼問題

今天在對接的時候遇到的問題,對方curl呼叫我的介面,給我傳送的資料中包含乙個中文字串,由於他那邊是gbk編碼,我這裡是utf 8,所以介面得到的post資料一直為空。在確定是因為編碼問題之後,也採取了iconv和加header的方法,但是不知為何都沒有生效,post資料仍然為空。最後解決了問題,是...

mysql 轉換編碼方式

vim etc my.cnf 在 mysqld 標籤下加上三行 default character set utf8 character set server utf8 在 mysql 標籤下加上一行 default character set utf8 在 mysql.server 標籤下加上一行...