Categories: Linux

Linux 查詢、轉換 Big5、UTF8 檔案編碼教學與範例

介紹如何在 Linux 系統中使用 fileiconv 指令查詢與轉換檔案編碼,處理 Big5 與 UTF8 檔案亂碼問題。

遇到含有中文的文字檔出現亂碼時,通常都是因為檔案採用不對的編碼所造成的,只要修正編碼之後即可恢復正常。在大多數的情況下,Linux 系統下會出現亂碼的中文檔案都是採用 Big5 編碼,只要轉為 UTF8 就可以正常使用了。

檢查檔案編碼

在 Linux 中若要檢查文字檔案的編碼,可以使用 file 指令:

# 檢查檔案類型
file myfile1.txt
myfile1.txt: UTF-8 Unicode text

file 指令預設會顯示讓人易讀的檔案格式說明文字,如果想要以精確的 MIME 類別格式來表示,可以加上 -i 參數:

# 檢查檔案類型(顯示 MIME 類別)
file -i myfile1.txt
myfile1.txt: text/plain; charset=utf-8

file 指令也可以一次檢查多個檔案的編碼:

# 檢查多個檔案的類型
file *.txt
myfile1.txt: UTF-8 Unicode text
myfile2.txt: ISO-8859 text

如果是 Big5 編碼的檔案,在使用 file 指令檢查時,通常會顯示 ISO-8859,像這裡的 myfile2.txt 就是一個 Big5 編碼的文字檔案。

轉換 Big5、UTF8 等檔案編碼

若要在 Linux 中轉換文字檔的編碼,可以使用 iconv 指令。例如將 Big5 編碼的檔案轉為 UTF8 編碼:

# Big5 編碼轉 UTF8 編碼
iconv -f big5 -t utf8 -o output.txt input.txt

其中 -f 參數是指定來源資料的編碼,-t 參數則是指定目的資料的編碼,而 input.txt 是輸入的檔案,轉出的結果會儲存在 output.txt 中。

若要反過來將 UTF8 編碼的檔案轉換為 Big5 編碼,只要把編碼對調即可:

# UTF8 編碼轉 Big5 編碼
iconv -f utf8 -t big5 -o output.txt input.txt

若要查詢 iconv 指令所支援的編碼,可以使用 -l 參數:

# 查詢所有支援的編碼格式
iconv -l

自動批次轉換編碼

以下的指令稿可以檢查所有的文字檔,將所有 Big5 編碼的檔案清單儲存於 big5.list 中,並以迴圈將每一個 Big5 編碼的檔案轉換為 UTF8 編碼:

# 產生 Big5 編碼的檔案清單,儲存於 big5.list
file *.txt | grep "ISO-8859" | awk 'BEGIN {FS=":"};{print $1}' > big5.list

# 讀取 big5.list 檔案清單,將檔案轉換為 UTF8 編碼
while read file; 
do
  iconv -f big5 -t utf8 -o "${file}.utf8" "${file}"
done < big5.list

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago