iconv 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于文本处理命令族(见文本处理命令族)。遇到乱码,多半是编码对不上,它来转。
iconv 把文本从一种字符编码转换成另一种(如 GBK ↔ UTF-8)。中文环境跨系统传文件常踩编码坑,它就是解药。
一、基本用法
bash
iconv -f GBK -t UTF-8 in.txt > out.txt # GBK 转 UTF-8
iconv -f UTF-8 -t GB2312 in.txt -o out.txt # -o 直接指定输出文件
-f(from)源编码,-t(to)目标编码,>或-o写结果。中文 Windows 老文件多是 GBK/GB2312,Linux 默认 UTF-8,互转是刚需。
二、查看支持的编码
bash
iconv -l # 列出所有支持的编码名(如 UTF-8, GBK, BIG5, ISO-8859-1)不确定编码名怎么写,先
iconv -l查(注意大小写和连字符,如GBK、UTF-8)。
三、实战:修复乱码
bash
file -i broken.txt # 先看当前编码(见 [file](/linux/cmd/file.md))
iconv -f GBK -t UTF-8 broken.txt -o fixed.txt修复流程:先用
file -i探测当前编码,再 iconv 转成 UTF-8。转换失败(报 "illegal input sequence")说明源编码猜错了,换-f试试。
四、容错转换
bash
iconv -f UTF-8 -t GBK//IGNORE in.txt -o out.txt # //IGNORE 跳过无法转换的字符
iconv -f UTF-8 -t GBK//TRANSLIT in.txt # //TRANSLIT 用近似字符替代目标编码装不下某些字符时(如 UTF-8 生僻字转 GBK),默认会报错停止。
//IGNORE丢掉转不了的,//TRANSLIT用近似字符替(如重音符号化)。
相关命令
一句话总结
iconv = 字符编码转换:-f 源 -t 目标(UTF-8↔GBK 最常见),> 或 -o 输出;iconv -l 查支持编码名;乱码先 file -i 探编码再转(见file);转不了用 //IGNORE 跳过或 //TRANSLIT 近似替代。中文跨系统传文件刚需。