RECODE(1) User Commands RECODE(1)

recode - converts files between character sets

recode [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]

Recode converts files between various character sets and surfaces.

If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments.

list one or all known charsets and aliases
restrict charsets according to known PAIRS list
write table NAME on stdout using LN, then exit
report all charsets being subset of others
display Copyright and copying conditions
display this help and exit
output version information and exit

explain sequence of steps and report progress
inhibit messages about irreversible recodings
force recodings even when not reversible
touch the recoded files after replacement
ignored for backwards compatibility

use strict mappings; discard untranslatable characters
convert only diacritics and special characters for HTML/LaTeX/BibTeX
limit recoding to strings and comments as for LN
use colons instead of double quotes for diaeresis
approximate IBMPC rulers by ASCII graphics
ignore CHARSET while choosing a recoding path

Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. LN is some language, it may be `c', `perl' or `po'; `c' is the default.

REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual.

Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout.

Written by François Pinard <>.

Report bugs at

Copyright © 1990-2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The full documentation for recode is maintained as a Texinfo manual. If the info and recode programs are properly installed at your site, the command

info recode

should give you access to the complete manual.

January 2023 recode 3.7.9