Linux 系統中處理跨平台文件時,編碼不一致是常見痛點。本文匯總三大核心工具——enca 檢測、convmv 文件名轉碼、iconv 內容轉碼——的安裝與實戰用法。
# 安裝
sudo apt-get install enca # Debian/Ubuntu
sudo yum install enca # CentOS/RHEL
# 檢測單個文件
enca filename
# 批量檢測
enca *
輸出示例:UTF-8、GBK、Big5 等。
# 安裝
sudo apt-get install convmv
# 基本語法
convmv -f 源編碼 -t 目標編碼 [選項] 文件名
# 常用選項
-r 遞歸處理子目錄
--notest 真正執行(默認僅預覽)
--list 顯示支持的編碼列表
--unescap URL 解碼(如 %20 → 空格)
# 實例:UTF-8 文件名 → GBK
convmv -f UTF-8 -t GBK --notest -r 目錄名
# 單文件轉換
iconv -f 源編碼 -t 目標編碼 輸入文件 -o 輸出文件
# 實例:GBK → UTF-8
iconv -f GBK -t UTF-8 file1.txt -o file2.txt
# 批量轉換當前目錄所有文件為 UTF-8
for f in *; do
iconv -f GBK -t UTF-8 "$f" -o "${f}.utf8" && mv "${f}.utf8" "$f"
done
# 使用 enca 自動檢測並轉換為 UTF-8
enca -x UTF-8 *
-x 參數指定目標編碼,enca 會自動檢測源編碼並轉換。
| 中文環境常見 | 說明 |
|---|---|
| GBK / GB2312 | 簡體中文 Windows 默認 |
| Big5 | 繁體中文傳統編碼 |
| UTF-8 | 通用 Unicode 實現,Linux 默認 |
| GB18030 | 國家標準,GBK 超集 |
convmv 默認 --notest 預覽模式,確認無誤再執行iconv -l 查看準確名稱(如 UTF-8 非 utf8)sed -i '1s/^\xEF\xBB\xBF//' 移除convmv 只改文件名,iconv 只改內容,兩者互不影響enca 看編碼,convmv 改文件名,iconv 改內容。三工具配合,解決 99% Linux 編碼遷移問題。
CentOS 5.5 修改 Apache 預設端口 80 為自訂端口 (含 SELinux 端口標記)
解決 Linux 執行 .sh 腳本提示「No such file or directory」:換行符格式轉換三法
深入解析 Linux 伺服器網路 I/O 模型:從 Select 到 Epoll 的效能躍升
Linux 網路管理核心指令大全:ftp、telnet、r 命令、netstat、nslookup、finger、ping
VPS 部署 OpenVPN 完整實戰指南 (Debian/Ubuntu 一鍵腳本與手動配置雙軌)