Linux下如何將使用各種字符編碼的文件轉(zhuǎn)化為UTF-8編碼-創(chuàng)新互聯(lián)

Linux 下如何將使用各種字符編碼的文件轉(zhuǎn)化為UTF-8編碼,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

成都創(chuàng)新互聯(lián)專(zhuān)注于蘇尼特左網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供蘇尼特左營(yíng)銷(xiāo)型網(wǎng)站建設(shè),蘇尼特左網(wǎng)站制作、蘇尼特左網(wǎng)頁(yè)設(shè)計(jì)、蘇尼特左網(wǎng)站官網(wǎng)定制、小程序定制開(kāi)發(fā)服務(wù),打造蘇尼特左網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供蘇尼特左網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
我們將一起看一看如何在  Linux 下將使用各種字符編碼的文件轉(zhuǎn)化為 UTF-8 編碼。

你可能已經(jīng)知道,計(jì)算機(jī)除了二進(jìn)制數(shù)據(jù),是不會(huì)理解和存儲(chǔ)字符、數(shù)字或者任何人類(lèi)能夠理解的東西的。一個(gè)二進(jìn)制位只有兩種可能的值,也就是0或1,真或假,是或否。其它的任何事物,比如字符、數(shù)據(jù)和圖片,必須要以二進(jìn)制的形式來(lái)表現(xiàn),以供計(jì)算機(jī)處理。

簡(jiǎn)單來(lái)說(shuō),字符編碼是一種可以指示電腦來(lái)將原始的 0 和 1 解釋成實(shí)際字符的方式,在這些字符編碼中,字符都以一串?dāng)?shù)字來(lái)表示。

字符編碼方案有很多種,比如 ASCII、ANCI、Unicode 等等。下面是 ASCII 編碼的一個(gè)例子。

字符            二進(jìn)制
A               01000001
B               01000010

在 Linux 中, 命令行工具iconv用來(lái)將使用一種編碼的文本轉(zhuǎn)化為另一種編碼。

你可以使用 file 命令,并添加-i或--mime參數(shù)來(lái)查看一個(gè)文件的字符編碼,這個(gè)參數(shù)可以讓程序像下面的例子一樣輸出字符串的 mime (Multipurpose Internet Mail Extensions) 數(shù)據(jù):

$ file -i Car.java
$ file -i CarDriver.java

Linux 下如何將使用各種字符編碼的文件轉(zhuǎn)化為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 下如何將使用各種字符編碼的文件轉(zhuǎn)化為UTF-8編碼

列出所有已有編碼字符集

將文件從 ISO-8859-1 編碼轉(zhuǎn)換為 UTF-8 編碼

下面,我們將學(xué)習(xí)如何將一種編碼方案轉(zhuǎn)換為另一種編碼方案。下面的命令將會(huì)將 ISO-8859-1 編碼轉(zhuǎn)換為 UTF-8 編碼。

考慮如下文件input.file,其中包含這幾個(gè)字符:

? ? ? ?

我們從查看這個(gè)文件的編碼開(kāi)始,然后來(lái)查看文件內(nèi)容。最后,我們可以把所有字符轉(zhuǎn)換為 UTF-8 編碼。

在運(yùn)行iconv命令之后,我們可以像下面這樣檢查輸出文件的內(nèi)容,和它使用的字符編碼。

$ 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 下如何將使用各種字符編碼的文件轉(zhuǎn)化為UTF-8編碼

在 Linux 中將 ISO-8859-1 轉(zhuǎn)化為 UTF-8

注意:如果輸出編碼后面添加了//IGNORE字符串,那些不能被轉(zhuǎn)換的字符將不會(huì)被轉(zhuǎn)換,并且在轉(zhuǎn)換后,程序會(huì)顯示一條錯(cuò)誤信息。

好,如果字符串//TRANSLIT被添加到了上面例子中的輸出編碼之后 (UTF-8//TRANSLIT),待轉(zhuǎn)換的字符會(huì)盡量采用形譯原則。也就是說(shuō),如果某個(gè)字符在輸出編碼方案中不能被表示的話(huà),它將會(huì)被替換為一個(gè)形狀比較相似的字符。

而且,如果一個(gè)字符不在輸出編碼中,而且不能被形譯,它將會(huì)在輸出文件中被一個(gè)問(wèn)號(hào)標(biāo)記?代替。

將多個(gè)文件轉(zhuǎn)換為 UTF-8 編碼

回到我們的主題。如果你想將多個(gè)文件甚至某目錄下所有文件轉(zhuǎn)化為 UTF-8 編碼,你可以像下面一樣,編寫(xiě)一個(gè)簡(jiǎn)單的  shell  腳本,并將其命名為encoding.sh:

#!/bin/bash
### 將 values_here 替換為輸入編碼
FROM_ENCODING="value_here"
### 輸出編碼 (UTF-8)
TO_ENCODING="UTF-8"
### 轉(zhuǎn)換命令
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING"
### 使用循環(huán)轉(zhuǎn)換多個(gè)文件
for  file  in  *.txt; do
$CONVERT   "$file"   -o  "${file%.txt}.utf8.converted"
done
exit 0

保存文件,然后為它添加可執(zhí)行權(quán)限。在待轉(zhuǎn)換文件 (*.txt) 所在的目錄中運(yùn)行這個(gè) 腳本。

$ chmod  +x  encoding.sh
$ ./encoding.sh

重要事項(xiàng):你也可以使這個(gè)腳本變得更通用,比如轉(zhuǎn)換任意特定的字符編碼到另一種編碼。為了達(dá)到這個(gè)目的,你只需要改變 FROM_ENCODING及TO_ENCODING變量的值。別忘了改一下輸出文件的文件名"${file%.txt}.utf8.converted".

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

$ man iconv

將這篇指南總結(jié)一下,理解字符編碼的概念、了解如何將一種編碼方案轉(zhuǎn)換為另一種,是一個(gè)電腦用戶(hù)處理文本時(shí)必須要掌握的知識(shí),程序員更甚。

關(guān)于Linux 下如何將使用各種字符編碼的文件轉(zhuǎn)化為UTF-8編碼問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

名稱(chēng)欄目:Linux下如何將使用各種字符編碼的文件轉(zhuǎn)化為UTF-8編碼-創(chuàng)新互聯(lián)
文章路徑:http://bm7419.com/article0/dsdgoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、企業(yè)網(wǎng)站制作動(dòng)態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣、Google網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)