您好,登錄后才能下訂單哦!
Linux 下如何將使用各種字符編碼的文件轉化為UTF-8編碼,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
我們將一起看一看如何在 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 中查看文件的編碼
iconv 工具的使用方法如下:
$ iconv option $ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
在這里,-f或--from-code表明了輸入編碼,而-t或--to-encoding指定了輸出編碼。
為了列出所有已有編碼的字符集,你可以使用以下命令:
$ iconv -l
列出所有已有編碼字符集
將文件從 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 中將 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 iconv
將這篇指南總結一下,理解字符編碼的概念、了解如何將一種編碼方案轉換為另一種,是一個電腦用戶處理文本時必須要掌握的知識,程序員更甚。
關于Linux 下如何將使用各種字符編碼的文件轉化為UTF-8編碼問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。