recode - Man Page

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.


-l,  --list[=FORMAT]

list one or all known charsets and aliases

-k,  --known=PAIRS

restrict charsets according to known PAIRS list

-h,  --header[=[LN/]NAME]

write table NAME on stdout using LN, then exit

-T,  --find-subsets

report all charsets being subset of others

-C,  --copyright

display Copyright and copying conditions


display this help and exit


output version information and exit

Operation modes

-v,  --verbose

explain sequence of steps and report progress

-q,  --quiet,  --silent

inhibit messages about irreversible recodings

-f,  --force

force recodings even when not reversible

-t,  --touch

touch the recoded files after replacement

-i,  -p,  --sequence=STRATEGY

ignored for backwards compatibility

Fine tuning

-s,  --strict

use strict mappings; discard untranslatable characters

-d,  --diacritics

convert only diacritics and special characters for HTML/LaTeX/BibTeX

-S,  --source[=LN]

limit recoding to strings and comments as for LN

-c,  --colons

use colons instead of double quotes for diaeresis

-g,  --graphics

approximate IBMPC rulers by ASCII graphics

-x,  --ignore=CHARSET

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 <>.

Reporting Bugs

Report bugs at

See Also

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.

Referenced By

dictl(1), enca(1), hspell(1), map(1), umap(1), xml2pmx(1).

January 2023 recode 3.7.9