RECODE(1)

๐Ÿ’… RECODE(1) โ€” or, how to glow-up your files between charsets โœจ

ok so bestie, quick intro before we dive in: this is the recode manual page, straight from the User Commands section of the manual. It's giving "quiet little utility that actually carries the whole charset-conversion operation on its back." ๐Ÿซถ


๐ŸŒธ NAME ๐ŸŒธ

recode โ€” converts files between character sets. that's it, that's the whole vibe. literally a charset translator for your files. ๐Ÿ’–


โœจ SYNOPSIS โœจ

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

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

Recode converts files between various character sets and surfaces. iconic behavior, no notes. ๐Ÿ’…

๐ŸŽ€ real talk though: if a long option shows an argument as mandatory, then it's mandatory for the equivalent short option too. same deal for optional arguments โ€” they stay optional for both. the rules do NOT switch up on you, periodt.

๐ŸŽ€ Listings:

  • -l, --list[=FORMAT] โ€” lists one charset or literally all the known charsets and aliases. very "let me show you around" energy. ๐ŸŒˆ
  • -k, --known=PAIRS โ€” restricts charsets according to the known PAIRS list. gatekeeping, but make it useful.
  • -h, --header[=[LN/]NAME] โ€” writes table NAME on stdout using LN, then exits. write it and dip. ๐Ÿ‘‹
  • -T, --find-subsets โ€” reports all charsets that are a subset of others. exposing the nepo babies of charset land ๐Ÿ’€
  • -C, --copyright โ€” displays copyright and copying conditions. legal era.
  • --help โ€” displays this help and exits. classic.
  • --version โ€” outputs version information and exits. also classic.

๐Ÿ‘‘ Operation modes:

  • -v, --verbose โ€” explains the sequence of steps and reports progress. main character energy: it narrates its own life. ๐ŸŽค
  • -q, --quiet, --silent โ€” inhibits messages about irreversible recodings. shhh, we're being mysterious now. ๐Ÿ™ˆ
  • -f, --force โ€” forces recodings even when they're not reversible. dangerous? slay? both tbh. ๐Ÿ”ฅ
  • -t, --touch โ€” touches the recoded files after replacement. little pat on the head afterwards, cute. ๐Ÿซถ
  • -i, -p, --sequence=STRATEGY โ€” ignored, for backwards compatibility. it's just here for the memories. ๐Ÿ’€

๐Ÿงš Fine tuning:

  • -s, --strict โ€” uses strict mappings; discards untranslatable characters. ruthless. ๐Ÿ’…
  • -d, --diacritics โ€” converts only diacritics and special characters, for HTML/LaTeX/BibTeX. the niche little accent specialist we stan. ๐Ÿ“
  • -S, --source[=LN] โ€” limits recoding to strings and comments, as for LN. only touching the parts that matter.
  • -c, --colons โ€” uses colons instead of double quotes for diaeresis. a stylistic choice, honestly. โœจ
  • -g, --graphics โ€” approximates IBMPC rulers with ASCII graphics. lowkey doing arts and crafts in here. ๐ŸŽจ
  • -x, --ignore=CHARSET โ€” ignores CHARSET when choosing a recoding path. not her, not today. ๐Ÿ™…โ€โ™€๏ธ
  • -I, --prefer-iconv โ€” uses iconv if possible. if the better tool's available, obviously we're using it. ๐Ÿ˜Œ

ok so here's the lore you actually need, bestie ๐Ÿ‘‡

Option -l with no FORMAT and no CHARSET lists the available charsets and surfaces. FORMAT is decimal, octal, hexadecimal or full (or one of dohf โ€” yes, those are the shorthand, iykyk). Unless DEFAULT_CHARSET is set in the environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. With -k, the possible before charsets are listed for the given after CHARSET โ€” both of them being tabular charsets โ€” with PAIRS of the form BEF1:AFT1,BEF2:AFT2,... and the BEFs and AFTs being codes 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. ๐Ÿ’–

โš ๏ธ heads up, this one's serious: each FILE is recoded over itself, destroying the original. no undo, no recycling bin, no "wait I had that open." ๐Ÿ˜ญ if no FILE is specified, then it acts as a filter and recodes stdin to stdout โ€” safe and cozy, no files harmed. ๐ŸŒธ

๐Ÿซถ MAINTAINER ๐Ÿซถ

Maintained by Reuben Thomas <rrt@sc3d.org>.

๐Ÿ’œ AUTHOR ๐Ÿ’œ

Written by Franรงois Pinard <pinard@iro.umontreal.ca>.

๐Ÿ› REPORTING BUGS ๐Ÿ›

Report bugs at https://github.com/rrthomas/recode.

Copyright ยฉ 1990-2023 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.

like, no warranty bestie. none. not even for merchantability or fitness for a particular purpose. ๐Ÿ˜ญ

๐Ÿ”ฅ 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. go read it, it's giving director's cut. ๐Ÿ‘‘


๐Ÿ’– and that's the whole page! this was recode version 3.7.17, dated October 2026, in the RECODE(1) section of the manual โ€” ok bye, go convert some charsets, you're gonna eat ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from
  • arch rolling: recode 3.7.17-1 ยท GPL-3.0-or-later AND LGPL-3.0-or-later
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms