在Linux如何讓更改文件的字符編碼

 

問題在個人 Linux 系統中有一個編碼爲 iso-8859-1 的字幕文件,其中部分字符沒法正常顯示,我想把文本改成 utf8 編碼。在 Linux 中, 有沒有一個好的工具來轉換文本文件的字符編碼?web

 

 

正如咱們所知道的那樣,電腦只可以處理低級的二進制值,並不能直接處理字符。當一個文本文件被存儲時,文件中的每個字符都被映射成二進制值,實際存儲在硬盤中的正是這些「二進制值」。以後當程序打開文本文件時,全部二進制值都被讀入並映射回原始的可讀字符。只有當全部須要訪問這個文件的程序都可以「理解」它的編碼,即二進制值到字符的映射時,這個「保存和打開」的過程才能很好地完成,這也確保了可理解數據的往返過程。工具

 

若是不一樣的程序使用不一樣的編碼來處理同一個文件,源文件中的特殊字符就沒法正常顯示。這裏的特殊字符指的是非英文字母的字符,例如帶重音的字符(好比 ñ,á,ü)。編碼

 

而後問題就來了: 1)咱們如何肯定一個肯定的文本文件使用的是什麼字符編碼? 2)咱們如何把文件轉換成已選擇的字符編碼?spa

步驟一

 

爲了肯定文件的字符編碼,咱們使用一個名爲 「file」 的命令行工具。由於 file 命令是一個標準的 UNIX 程序,因此咱們能夠在全部現代的 Linux 發行版中找到它。命令行

 

運行下面的命令:code

 

$ file --mime-encoding filename 

 

 

 

步驟二

下一步是查看你的 Linux 系統所支持的文件編碼種類。爲此,咱們使用名爲 iconv 的工具及 「-l」 選項(L 的小寫)來列出全部當前支持的編碼。orm

 

$ iconv -l 

iconv 工具是 GNU libc 庫組成部分,所以它在全部 Linux 發行版中都是開箱即用的。blog

 

步驟三

在咱們在咱們的 Linux 系統所支持的編碼裏面選定了目標編碼以後,運行下面的命令來完成編碼轉換:utf-8

$ iconv -f old_encoding -t new_encoding filename

例如,把 iso-8859-1 編碼轉換爲 utf-8 編碼:ci

$ iconv -f iso-8859-1 -t utf-8 input.txt 

相關文章
相關標籤/搜索