iconv - convert text from one character encoding to another
iconv [options] [-f from-encoding] [-t
to-encoding] [inputfile]...
The iconv program reads in text in one encoding and outputs
the text in another encoding. If no input files are given, or if it is given
as a dash (-), iconv reads from standard input. If no output file is
given, iconv writes to standard output.
If no from-encoding is given, the default is derived from
the current locale's character encoding. If no to-encoding is given,
the default is derived from the current locale's character encoding.
- -f from-encoding,
--from-code=from-encoding
- Use from-encoding for input characters.
- -t to-encoding,
--to-code=to-encoding
- Use to-encoding for output characters.
- If the string //IGNORE is appended to to-encoding,
characters that cannot be converted are discarded and an error is printed
after conversion.
- If the string //TRANSLIT is appended to to-encoding,
characters being converted are transliterated when needed and possible.
This means that when a character cannot be represented in the target
character set, it can be approximated through one or several similar
looking characters. Characters that are outside of the target character
set and cannot be transliterated are replaced with a question mark (?) in
the output.
- -l, --list
- List all known character set encodings.
- -c
- Silently discard characters that cannot be converted instead of
terminating when encountering such characters.
- -o outputfile,
--output=outputfile
- Use outputfile for output.
- -s, --silent
- This option is ignored; it is provided only for compatibility.
- --verbose
- Print progress information on standard error when processing multiple
files.
- -?, --help
- Print a usage summary and exit.
- --usage
- Print a short usage summary and exit.
- -V, --version
- Print the version number, license, and disclaimer of warranty for
iconv.
Zero on success, nonzero on errors.
Internally, the iconv program uses the iconv(3)
function which in turn uses gconv modules (dynamically loaded shared
libraries) to convert to and from a character set. Before calling
iconv(3), the iconv program must first allocate a conversion
descriptor using iconv_open(3). The operation of the latter function
is influenced by the setting of the GCONV_PATH environment
variable:
- •
- If GCONV_PATH is not set, iconv_open(3) loads the system
gconv module configuration cache file created by iconvconfig(8) and
then, based on the configuration, loads the gconv modules needed to
perform the conversion. If the system gconv module configuration cache
file is not available then the system gconv module configuration file is
used.
- •
- If GCONV_PATH is defined (as a colon-separated list of pathnames),
the system gconv module configuration cache is not used. Instead,
iconv_open(3) first tries to load the configuration files by
searching the directories in GCONV_PATH in order, followed by the
system default gconv module configuration file. If a directory does not
contain a gconv module configuration file, any gconv modules that it may
contain are ignored. If a directory contains a gconv module configuration
file and it is determined that a module needed for this conversion is
available in the directory, then the needed module is loaded from that
directory, the order being such that the first suitable module found in
GCONV_PATH is used. This allows users to use custom modules and
even replace system-provided modules by providing such modules in
GCONV_PATH directories.
- /usr/lib/gconv
- Usual default gconv module path.
- /usr/lib/gconv/gconv-modules
- Usual system default gconv module configuration file.
- /usr/lib/gconv/gconv-modules.cache
- Usual system gconv module configuration cache.
Depending on the architecture, the above files may instead be
located at directories with the path prefix /usr/lib64.
Convert text from the ISO 8859-15 character encoding to UTF-8:
$ iconv -f ISO-8859-15 -t UTF-8 < input.txt > output.txt
The next example converts from UTF-8 to ASCII, transliterating
when possible:
$ echo abc ß α € àḃç | iconv -f UTF-8 -t ASCII//TRANSLIT
abc ss ? EUR abc
locale(1), uconv(1), iconv(3),
nl_langinfo(3), charsets(7), iconvconfig(8)