recode 命令是 Linux / FreeBSD 系统中用于处理字符集转换的工具。它支持几乎全部的字符编码形式,能够对多种格式的文档进行处理。

本教程将全面的介绍 recode 命令的功能,以方便你能够方便的运行 recode 命令解决你的问题。

recode 命令的释义

recode ( re code 重新编码 ) 命令的作用是把一种以字符编码转为另一种字符编码,主要功能特点有:

  • 支持多种格式的文本:支持文本文件、HTML、XML 等类型的文本
  • 支持超多种编码:支持 200+字符集(包括 UTF-8 等)

recode 命令的语法结构

recode 命令的具体语法结构如下所示:

recode [OPTION]... [CHARSET-SEQUENCE] FILE...
recode [OPTION]... INPUT-CHARSET..OUTPUT-CHARSET FILE

语法结构解释说明:

  • CHARSET-SEQUENCE:多种字符集转换的顺序(多个字符集用 .. 连接)
  • INPUT-CHARSET..OUTPUT-CHARSET:指定输入输出字符集
  • FILE:目标文件(可以输入多个文件/也可以使用通配符匹配文件)
  • OPTION:转换字符集时使用的选项

常用的编码及其格式文本的说明:

  • 常用的文本编码:latin1, utf8, gbk
  • 各个系统对应的换行符:unix (LF), dos (CRLF), mac (CR)
  • 文本格式说明:html (HTML实体), b64 (Base64)

recode 命令使用示例

1. ISO-8859 转换为 UTF-8 格式

字符编码 ISO-8859 对应的编码名称为 latin1,如下示例为把document.txt文件的编码从ISO-8859 转换为 UTF-8 格式:

recode latin1..utf8 document.txt

注意:建议配合 -b 选项一起使用,这样可以备份原文件

2. 把 HTML 实体符号转换为 UTF-8

在 HTML 中有些字符有着特定的字符编码形式如空格(&nbsp):

recode html..utf8 < input.html > output.txt

3. 批量转换文件

可以使用 * 通配符匹配多个文件,这样可以一次性转换多个文件:

recode -v latin1..utf8/dos *.csv

解释说明:

.utf8/dos 的意思是使用 UTF-8 编码,使用 dos 系统中默认的换行符作为转换后的换行符

4. 备份转换并忽略无效字符

使用 -b 选项转换文件时会创建文件的副本,使用 -d 选项把字符串转换后无对应字符的替换为 ?:

recode -d -b utf8..ascii important.log

recode 命令选项详解

如下给出 recode 命令选项的详细解释说明(包含选项及其对应的长选项形式):

短选项 长选项 说明
-v --verbose 详细模式:显示转换过程信息
-q --quiet 静默模式:抑制警告信息
-d --diacritics 忽略无效字符:将无法转换的字符替换为 ?
-f --force 强制覆盖:不提示直接覆盖输出文件
-b --backup 创建备份:转换前备份原始文件(扩展名 .~rec~)
-l --list 列出支持字符集:显示所有可用编码格式
-s --sequence 顺序处理:严格按序列顺序执行转换
-t --test 测试模式:模拟转换并显示统计信息
-h --help 显示帮助文档
-V --version 显示版本信息

系统安装指南

recode 命令在大多数的系统中默认是没有安装,如果在你的系统中已经安装可以直接使用,如果没有安装,可以使用如下的命令在对应的系统中安装 recode 命令。

Debian / Ubuntu

如下给出在 Debian / Ubuntu 系统中先更新软件源,再安装 recode 命令:

sudo apt update
sudo apt install recode

RHEL / AlmaLinux / Rocky Linux

如下给出在 RHEL / AlmaLinux / Rocky Linux 系统中先更新软件源,再安装 recode 命令:

# RHEL/CentOS 7
sudo yum install epel-release
sudo yum install recode

# RHEL 8+/AlmaLinux/Rocky Linux
sudo dnf install epel-release
sudo dnf install recode

FreeBSD

如下给出在 FreeBSD 系统中先更新软件源,再安装 recode 命令:

sudo pkg update
sudo pkg install recode

相似命令对比

命令 优势 局限性
recode 支持超过200多种类型的字符集/可处理多种类型的文件格式 学习曲线较为陡峭
iconv 系统默认自带/功能相对简单,但是转换速度非常的快 仅支持基础类型的字符集
dos2unix 主要是针对换行符之间的转换 不支持字符编码之间的转换
enca 自动检测编码 检测准确率依赖语言模型

结语

本文全面的介绍了 recode 的语法结构及其功能,并给出了 recode 命令的具体使用示例,以及 recode 命令和其他命令之间的功能对比,相信你能够对 recode 命令有个基本的了解,并帮助你正确的使用 recode 命令转换文件的编码格式。 recode 命令可以在 Linux 各发行版和 FreeBSD 系统中使用,基本功能是相同的。