Iconv
Template:Short description Template:Use dmy dates Template:Lowercase {{#invoke:Infobox|infobox}}Template:Template other{{#invoke:Check for unknown parameters | check | showblankpositional=1 | unknown = Template:Main other | preview = Page using Template:Infobox software with unknown parameter "_VALUE_"|ignoreblank=y | AsOf | author | background | bodystyle | caption | collapsetext | collapsible | developer | discontinued | engine | engines | genre | included with | language | language count | language footnote | latest preview date | latest preview version | latest release date | latest release version | latest_preview_date | latest_preview_version | latest_release_date | latest_release_version | licence | license | logo | logo alt | logo caption | logo upright | logo size | logo title | logo_alt | logo_caption | logo_upright | logo_size | logo_title | middleware | module | name | operating system | operating_system | other_names | platform | programming language | programming_language | released | replaced_by | replaces | repo | screenshot | screenshot alt | screenshot upright | screenshot size | screenshot title | screenshot_alt | screenshot_upright | screenshot_size | screenshot_title | service_name | size | standard | title | ver layout | website | qid }}Template:Main other In Unix and Unix-like operating systems, iconv (an abbreviation of internationalization conversion)<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> is a command-line program<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> and a standardized application programming interface (API)<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> used to convert between different character encodings. "It can convert from any of these encodings to any other, through Unicode conversion."<ref name="gnulibiconv">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>
HistoryEdit
Initially appearing on the HP-UX operating system,<ref>{{#invoke:citation/CS1|citation
|CitationClass=web
}}</ref>iconv()
as well as the utility was standardized within XPG4 and is part of the Single UNIX Specification (SUS).
ImplementationsEdit
Most Linux distributions provide an implementation, either from the GNU Standard C Library (included since version 2.1, February 1999), or the more traditional GNU libiconv
, for systems based on other Standard C Libraries.
The iconv
function<ref>{{#invoke:citation/CS1|citation
|CitationClass=web
}}Template:Dead link</ref> on both is licensed as LGPL, so it is linkable with closed source applications.
Unlike the libraries, the iconv
utility is licensed under GPL in both implementations.<ref>{{#invoke:citation/CS1|citation
|CitationClass=web
}}Template:Dead link</ref>
The GNU libiconv implementation is portable, and can be used on various UNIX-like and non-UNIX systems. Version 0.3 dates from December 1999.
The uconv utility from International Components for Unicode provides an iconv-compatible command-line syntax for transcoding.
Most BSD systems use NetBSD's implementation, which first appeared in December 2004.
The musl C library implements the iconv
function with support for all encodings specified by the WHATWG Encoding Standard.
SupportEdit
Currently, over a hundred different character encodings are supported in the GNU variant.<ref name="gnulibiconv"/>
PortsEdit
Under Microsoft Windows, the iconv library and the utility is provided by GNU's libiconv found in Cygwin<ref name="cygwin-libiconv-search">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> and GnuWin32<ref name="gnuwin32-libiconv">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> environments; there is also a "purely Win32" implementation called "win-iconv" that uses Windows' built-in routines for conversion.<ref name="win-iconv">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> The iconv function is also available for many programming languages.
The Template:Mono command has also been ported to the IBM i operating system.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>
UsageEdit
stdin
can be converted from ISO-8859-1 to current locale and output to stdout
using:<ref>{{#invoke:citation/CS1|citation
|CitationClass=web
}}</ref>
<syntaxhighlight lang="bash"> iconv -f iso-8859-1 </syntaxhighlight>
An input file infile
can be converted from ISO-8859-1 to UTF-8 and output to output file outfile
using:
<syntaxhighlight lang="bash"> iconv -f iso-8859-1 -t utf-8 <infile> -o <outfile> </syntaxhighlight>