首頁 php教程 PHP开发 如何在Linux中將檔案編碼轉換為UTF-8

如何在Linux中將檔案編碼轉換為UTF-8

Nov 16, 2016 am 09:13 AM

在這篇教程中,我們將解釋字元編碼的含義,然後給出一些使用命令列工具將使用某種字元編碼的檔案轉換為另一種編碼的範例。最後,我們將一起看看如何在 Linux 下將使用各種字元編碼的檔案轉換為 UTF-8 編碼。

你可能已經知道,電腦除了二進位數據,是不會理解和儲存字元、數字或任何人類能夠理解的東西的。一個二進位位只有兩種可能的值,也就是 0 或 1,真或假,是或否。其它的任何事物,如字元、資料和圖片,必須以二進位的形式來表現,以供電腦處理。

簡單來說,字元編碼是一種可以指示電腦來將原始的 0 和 1 解釋成實際字元的方式,在這些字元編碼中,字元都以一串數字來表示。

字元編碼方案有很多種,例如 ASCII、ANCI、Unicode 等等。下面是 ASCII 編碼的一個例子。

字符            二进制 
A               01000001 
B               01000010
登入後複製

在 Linux 中,命令列工具 iconv 用來將使用一種編碼的文字轉換為另一種編碼。

你可以使用file 指令,並加入-i 或--mime 參數來檢視一個檔案的字元編碼,這個參數可以讓程式像下面的範例一樣輸出字串的mime (Multipurpose Internet Mail Extensions) 資料:

$ file -i Car.java 
$ file -i CarDriver.java
登入後複製

如何在Linux中將檔案編碼轉換為UTF-8

在Linux 中查看文件的編碼

iconv 工具的使用方法如下:

$ iconv option 
$ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
登入後複製

在這裡,-f 或--from-code 表明了輸入編碼,而-t 或--to-encoding 指定了輸出編碼。

為了列出所有已有編碼的字符集,你可以使用以下命令:

$ iconv -l
登入後複製

如何在Linux中將檔案編碼轉換為UTF-8

列出所有已有編碼字符集

將文件從ISO-8859-1 編碼轉換為UTF-8 編碼

下面,我們將學習如何將一種編碼方案轉換為另一種編碼方案。下面的命令將會將 ISO-8859-1 編碼轉換為 UTF-8 編碼。

考慮以下檔案 input.file,其中包含這幾個字元:

� � � �
登入後複製

我們從查看這個檔案的編碼開始,然後來查看檔案內容。最後,我們可以把所有字元轉換為 UTF-8 編碼。

在執行 iconv 指令之後,我們可以像下面這樣檢查輸出檔的內容,和它使用的字元編碼。

$ file -i input.file 
$ cat input.file  
$ iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file 
$ cat out.file  
$ file -i out.file
登入後複製

如何在Linux中將檔案編碼轉換為UTF-8

在Linux 中將ISO-8859-1 轉換為UTF-8

注意:如果輸出編碼後面添加了//IGNORE 字串,那些不能被轉換的字元將不會被轉換,並且在轉換後,程式會顯示錯誤訊息。

好,如果字串 //TRANSLIT 被加入了上面範例中的輸出編碼之後 (UTF-8//TRANSLIT),待轉換的字元會盡量採用形譯原則。也就是說,如果某個字元在輸出編碼方案中不能被表示的話,它將會被替換為一個形狀比較相似的字元。

而且,如果一個字符不在輸出編碼中,而且不能被形譯,它將會在輸出文件中被一個問號標記 ? 代替。

將多個檔案轉換為 UTF-8 編碼

回到我們的主題。如果你想將多個文件甚至某目錄下所有文件轉換為UTF-8 編碼,你可以像下面一樣,寫一個簡單的shell 腳本,並將其命名為encoding.sh:

#!/bin/bash 
### 将 values_here 替换为输入编码 
FROM_ENCODING="value_here" 
### 输出编码 (UTF-8) 
TO_ENCODING="UTF-8" 
### 转换命令 
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING" 
### 使用循环转换多个文件 
for  file  in  *.txt; do 
$CONVERT   "$file"   -o  "${file%.txt}.utf8.converted" 
done 
exit 0
登入後複製

保存文件,然後為它添加可執行權限。在待轉換檔案 (*.txt) 所在的目錄中執行這個腳本

$ chmod  +x  encoding.sh 
$ ./encoding.sh
登入後複製

重要事項:你也可以讓這個腳本變得更通用,例如轉換任意特定的字元編碼到另一種編碼。為了達到這個目的,你只需要改變 FROM_ENCODING 及 TO_ENCODING 變數的值。別忘了改一下輸出檔的檔名 "${file%.txt}.utf8.converted".

若要了解更多信息,可以查看 iconv 的手冊頁 (man page)。

$ man iconv
登入後複製

將這篇指南總結一下,理解字元編碼的概念、了解如何將一種編碼方案轉換為另一種,是一個電腦使用者處理文字時必須要掌握的知識,程式設計師更甚。



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)