Linux 檔案編碼大挪移
在這篇教程中,我們將解釋字元編碼的含義,然後給出一些使用 命令行工具將使用某種字元編碼的檔案轉化為另一種編碼的例子。最後,我們將一起看一看如何在 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 編碼。
考慮如下檔案 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 編碼,你可以像下面一樣,編寫一個簡單的 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
將這篇指南總結一下,理解字元編碼的概念、瞭解如何將一種編碼方案轉換為另一種,是一個電腦使用者處理文字時必須要掌握的知識,程式設計師更甚。
原文地址: https://www.linuxprobe.com/encoding-convert-utf8.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2682127/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉換Linux 檔案編碼方式Linux
- 檢測檔案編碼,轉換檔案編碼
- 如何進行Linux下檔案編碼格式轉換Linux
- 前端檔案編碼方式前端
- Linux查詢大檔案Linux
- 文字檔案的編碼格式
- java 猜測 檔案編碼Java
- linux大檔案上傳(nc)Linux
- Linux– 檔案編輯器 vi/vim(1)Linux
- PDF檔案有限制密碼,該如何編輯檔案?密碼
- 字元編碼與檔案處理字元
- Linux排查磁碟大檔案或大目錄Linux
- 【C語言】linux下多檔案編譯C語言Linux編譯
- Linux(CentOS7)使用vim編輯檔案LinuxCentOS
- Linux檔案的顏色程式碼Linux
- Linux 5.12 的 exFAT 檔案系統更快刪除大檔案Linux
- GC機制+字元編碼+檔案操作GC字元
- DBeaver如何調整sql檔案編碼SQL
- java安全編碼指南之:檔案IO操作Java
- LINUX下查詢大檔案及大的資料夾Linux
- 修改linux最大檔案控制程式碼數Linux
- Linux基礎命令---htpasswd建立密碼檔案Linux密碼
- 深入wepy原始碼:wpy檔案編譯過程原始碼編譯
- 編碼的進階,檔案操作,深淺copy
- 檔案 編碼為Base64字串字串
- C#自動檢測檔案的編碼C#
- Python3編碼如何實現檔案操作?Python
- Linux中目標與檔案的編輯管理(詳細)Linux
- CMD 執行大檔案SQL指令碼SQL指令碼
- Linux核心檔案Linux
- Linux檔案管理Linux
- linux 檔案操作Linux
- Idea編碼UTF-8中.properties 配置檔案中文亂碼Idea
- Linux----12 檔案與檔案操作Linux
- Linux基礎命令---檢查密碼檔案pwckLinux密碼
- Linux下刪除亂碼或特殊字元檔案Linux字元
- 透過二維碼傳輸檔案到linuxLinux
- Mac系統下檔案編碼轉換工具encaMac