2004-11-03 13:51:07 +00:00
|
|
|
.\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
|
|
|
|
.\"
|
|
|
|
.\" This is free documentation; you can redistribute it and/or
|
|
|
|
.\" modify it under the terms of the GNU General Public License as
|
|
|
|
.\" published by the Free Software Foundation; either version 2 of
|
|
|
|
.\" the License, or (at your option) any later version.
|
|
|
|
.\"
|
|
|
|
.\" References consulted:
|
|
|
|
.\" GNU glibc-2 source code and manual
|
intro.1, time.1, accept.2, bind.2, connect.2, execve.2, flock.2, getdents.2, getpriority.2, getuid.2, intro.2, ioctl.2, mincore.2, mknod.2, personality.2, ptrace.2, read.2, recv.2, select_tut.2, send.2, sendfile.2, shmctl.2, sigaction.2, signal.2, stat.2, times.2, truncate.2, umask.2, wait.2, MB_CUR_MAX.3, MB_LEN_MAX.3, argz_add.3, btowc.3, clearenv.3, clock.3, cmsg.3, end.3, endian.3, errno.3, exit.3, fgetwc.3, fgetws.3, fopen.3, fputwc.3, fputws.3, fseek.3, fwide.3, getfsent.3, getgrnam.3, gethostid.3, getipnodebyname.3, getmntent.3, getpwnam.3, getwchar.3, grantpt.3, iconv.3, iconv_close.3, iconv_open.3, insque.3, intro.3, iswalnum.3, iswalpha.3, iswblank.3, iswcntrl.3, iswctype.3, iswdigit.3, iswgraph.3, iswlower.3, iswprint.3, iswpunct.3, iswspace.3, iswupper.3, iswxdigit.3, malloc.3, mblen.3, mbrlen.3, mbrtowc.3, mbsinit.3, mbsnrtowcs.3, mbsrtowcs.3, mbstowcs.3, mbtowc.3, mkstemp.3, mktemp.3, nl_langinfo.3, openpty.3, posix_openpt.3, printf.3, ptsname.3, putwchar.3, qecvt.3, rcmd.3, readdir.3, rexec.3, rpc.3, setnetgrent.3, shm_open.3, sigpause.3, stdin.3, stpcpy.3, strftime.3, strptime.3, syslog.3, towctrans.3, towlower.3, towupper.3, ttyslot.3, ungetwc.3, unlocked_stdio.3, wcpcpy.3, wcpncpy.3, wcrtomb.3, wcscasecmp.3, wcscat.3, wcschr.3, wcscmp.3, wcscpy.3, wcscspn.3, wcsdup.3, wcslen.3, wcsncasecmp.3, wcsncat.3, wcsncmp.3, wcsncpy.3, wcsnlen.3, wcsnrtombs.3, wcspbrk.3, wcsrchr.3, wcsrtombs.3, wcsspn.3, wcsstr.3, wcstok.3, wcstombs.3, wcswidth.3, wctob.3, wctomb.3, wctrans.3, wctype.3, wcwidth.3, wmemchr.3, wmemcmp.3, wmemcpy.3, wmemmove.3, wmemset.3, wprintf.3, console_ioctl.4, pts.4, elf.5, filesystems.5, hosts.5, proc.5, ttytype.5, boot.7, capabilities.7, credentials.7, epoll.7, glob.7, koi8-r.7, path_resolution.7, pty.7, signal.7, suffixes.7, time.7, unicode.7, unix.7, uri.7, utf-8.7: global fix: s/Unix/UNIX/
The man pages were rather inconsistent in the use of "Unix"
versus "UNIX". Let's go with the trademark usage.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-10-12 04:45:38 +00:00
|
|
|
.\" OpenGroup's Single UNIX specification
|
2005-06-21 08:55:14 +00:00
|
|
|
.\" http://www.UNIX-systems.org/online.html
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
|
|
|
.\" 2000-06-30 correction by Yuichi SATO <sato@complex.eng.hokudai.ac.jp>
|
|
|
|
.\" 2000-11-15 aeb, fixed prototype
|
|
|
|
.\"
|
2008-09-08 13:50:13 +00:00
|
|
|
.TH ICONV 3 2008-09-08 "GNU" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
|
|
|
iconv \- perform character set conversion
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.nf
|
|
|
|
.B #include <iconv.h>
|
|
|
|
.sp
|
|
|
|
.BI "size_t iconv(iconv_t " cd ,
|
2007-04-03 15:32:52 +00:00
|
|
|
.BI " char **" inbuf ", size_t *" inbytesleft ,
|
|
|
|
.BI " char **" outbuf ", size_t *" outbytesleft );
|
2004-11-03 13:51:07 +00:00
|
|
|
.fi
|
|
|
|
.SH DESCRIPTION
|
|
|
|
The argument \fIcd\fP must be a conversion descriptor created using the
|
2007-05-12 09:06:04 +00:00
|
|
|
function
|
2007-05-21 22:14:09 +00:00
|
|
|
.BR iconv_open (3).
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
|
|
|
The main case is when \fIinbuf\fP is not NULL and \fI*inbuf\fP is not NULL.
|
2007-05-12 09:06:04 +00:00
|
|
|
In this case, the
|
|
|
|
.BR iconv ()
|
|
|
|
function converts the multibyte sequence
|
2004-11-03 13:51:07 +00:00
|
|
|
starting at \fI*inbuf\fP to a multibyte sequence starting at \fI*outbuf\fP.
|
|
|
|
At most \fI*inbytesleft\fP bytes, starting at \fI*inbuf\fP, will be read.
|
|
|
|
At most \fI*outbytesleft\fP bytes, starting at \fI*outbuf\fP, will be written.
|
|
|
|
.PP
|
2007-05-12 09:06:04 +00:00
|
|
|
The
|
|
|
|
.BR iconv ()
|
|
|
|
function converts one multibyte character at a time, and for
|
2004-11-03 13:51:07 +00:00
|
|
|
each character conversion it increments \fI*inbuf\fP and decrements
|
|
|
|
\fI*inbytesleft\fP by the number of converted input bytes, it increments
|
|
|
|
\fI*outbuf\fP and decrements \fI*outbytesleft\fP by the number of converted
|
|
|
|
output bytes, and it updates the conversion state contained in \fIcd\fP.
|
2008-09-08 13:50:13 +00:00
|
|
|
If the character encoding of the input is stateful, the
|
|
|
|
.BR iconv ()
|
|
|
|
function can also convert a sequence of input bytes
|
|
|
|
to an update to the conversion state without producing any output bytes;
|
|
|
|
such input is called a \fIshift sequence\fP.
|
2004-11-03 13:51:07 +00:00
|
|
|
The conversion can stop for four reasons:
|
|
|
|
.PP
|
2007-04-12 22:42:49 +00:00
|
|
|
1. An invalid multibyte sequence is encountered in the input.
|
|
|
|
In this case
|
2007-07-09 21:33:55 +00:00
|
|
|
it sets \fIerrno\fP to \fBEILSEQ\fP and returns
|
2007-12-22 16:26:51 +00:00
|
|
|
.IR (size_t)\ \-1 .
|
2007-07-09 21:33:55 +00:00
|
|
|
\fI*inbuf\fP
|
2004-11-03 13:51:07 +00:00
|
|
|
is left pointing to the beginning of the invalid multibyte sequence.
|
|
|
|
.PP
|
2007-06-08 11:56:22 +00:00
|
|
|
2. The input byte sequence has been entirely converted,
|
|
|
|
that is, \fI*inbytesleft\fP has gone down to 0.
|
2007-05-12 09:06:04 +00:00
|
|
|
In this case
|
|
|
|
.BR iconv ()
|
|
|
|
returns the number of
|
accept.2, access.2, acct.2, clock_nanosleep.2, mbind.2, mincore.2, remap_file_pages.2, sched_setscheduler.2, set_mempolicy.2, splice.2, stat.2, syslog.2, timer_create.2, timerfd_create.2, truncate.2, fenv.3, ferror.3, fflush.3, fgetwc.3, fgetws.3, flockfile.3, fputwc.3, fputws.3, fread.3, getopt.3, gets.3, getwchar.3, glob.3, iconv.3, longjmp.3, pow.3, printf.3, puts.3, putwchar.3, regex.3, rpc.3, scanf.3, setjmp.3, termios.3, unlocked_stdio.3, wcswidth.3, hd.4, rtc.4, st.4, core.5, dir_colors.5, elf.5, proc.5, arp.7, ascii.7, boot.7, bootparam.7, charsets.7, futex.7, ip.7, iso_8859-11.7, man-pages.7, man.7, mdoc.samples.7, path_resolution.7, pipe.7, posixoptions.7, unicode.7, unix.7, uri.7, utf-8.7, ld.so.8: s/non-/non/
The tendency in English, as prescribed in style guides like
Chicago MoS, is towards removing hyphens after prefixes
like "non-" etc.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-01-16 17:20:12 +00:00
|
|
|
nonreversible conversions performed during this call.
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
|
|
|
3. An incomplete multibyte sequence is encountered in the input, and the
|
2007-04-12 22:42:49 +00:00
|
|
|
input byte sequence terminates after it.
|
|
|
|
In this case it sets \fIerrno\fP to
|
2007-07-09 21:33:55 +00:00
|
|
|
\fBEINVAL\fP and returns
|
2007-12-22 16:26:51 +00:00
|
|
|
.IR (size_t)\ \-1 .
|
2007-07-09 21:33:55 +00:00
|
|
|
\fI*inbuf\fP is left pointing to the
|
2004-11-03 13:51:07 +00:00
|
|
|
beginning of the incomplete multibyte sequence.
|
|
|
|
.PP
|
2007-04-12 22:42:49 +00:00
|
|
|
4. The output buffer has no more room for the next converted character.
|
2007-07-09 21:33:55 +00:00
|
|
|
In this case it sets \fIerrno\fP to \fBE2BIG\fP and returns
|
2007-12-22 16:26:51 +00:00
|
|
|
.IR (size_t)\ \-1 .
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
|
|
|
A different case is when \fIinbuf\fP is NULL or \fI*inbuf\fP is NULL, but
|
2007-04-12 22:42:49 +00:00
|
|
|
\fIoutbuf\fP is not NULL and \fI*outbuf\fP is not NULL.
|
|
|
|
In this case, the
|
2007-05-12 09:06:04 +00:00
|
|
|
.BR iconv ()
|
|
|
|
function attempts to set \fIcd\fP's conversion state to the
|
2004-11-03 13:51:07 +00:00
|
|
|
initial state and store a corresponding shift sequence at \fI*outbuf\fP.
|
|
|
|
At most \fI*outbytesleft\fP bytes, starting at \fI*outbuf\fP, will be written.
|
|
|
|
If the output buffer has no more room for this reset sequence, it sets
|
2007-07-09 21:33:55 +00:00
|
|
|
\fIerrno\fP to \fBE2BIG\fP and returns
|
2007-12-22 16:26:51 +00:00
|
|
|
.IR (size_t)\ \-1 .
|
2007-04-12 22:42:49 +00:00
|
|
|
Otherwise it increments
|
2004-11-03 13:51:07 +00:00
|
|
|
\fI*outbuf\fP and decrements \fI*outbytesleft\fP by the number of bytes
|
|
|
|
written.
|
|
|
|
.PP
|
|
|
|
A third case is when \fIinbuf\fP is NULL or \fI*inbuf\fP is NULL, and
|
2007-04-12 22:42:49 +00:00
|
|
|
\fIoutbuf\fP is NULL or \fI*outbuf\fP is NULL.
|
2007-05-12 09:06:04 +00:00
|
|
|
In this case, the
|
|
|
|
.BR iconv ()
|
2004-11-03 13:51:07 +00:00
|
|
|
function sets \fIcd\fP's conversion state to the initial state.
|
|
|
|
.SH "RETURN VALUE"
|
2007-05-12 09:06:04 +00:00
|
|
|
The
|
|
|
|
.BR iconv ()
|
|
|
|
function returns the number of characters converted in a
|
accept.2, access.2, acct.2, clock_nanosleep.2, mbind.2, mincore.2, remap_file_pages.2, sched_setscheduler.2, set_mempolicy.2, splice.2, stat.2, syslog.2, timer_create.2, timerfd_create.2, truncate.2, fenv.3, ferror.3, fflush.3, fgetwc.3, fgetws.3, flockfile.3, fputwc.3, fputws.3, fread.3, getopt.3, gets.3, getwchar.3, glob.3, iconv.3, longjmp.3, pow.3, printf.3, puts.3, putwchar.3, regex.3, rpc.3, scanf.3, setjmp.3, termios.3, unlocked_stdio.3, wcswidth.3, hd.4, rtc.4, st.4, core.5, dir_colors.5, elf.5, proc.5, arp.7, ascii.7, boot.7, bootparam.7, charsets.7, futex.7, ip.7, iso_8859-11.7, man-pages.7, man.7, mdoc.samples.7, path_resolution.7, pipe.7, posixoptions.7, unicode.7, unix.7, uri.7, utf-8.7, ld.so.8: s/non-/non/
The tendency in English, as prescribed in style guides like
Chicago MoS, is towards removing hyphens after prefixes
like "non-" etc.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-01-16 17:20:12 +00:00
|
|
|
nonreversible way during this call; reversible conversions are not counted.
|
2007-07-09 21:33:55 +00:00
|
|
|
In case of error, it sets \fIerrno\fP and returns
|
2007-12-22 16:26:51 +00:00
|
|
|
.IR (size_t)\ \-1 .
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH ERRORS
|
|
|
|
The following errors can occur, among others:
|
|
|
|
.TP
|
|
|
|
.B E2BIG
|
|
|
|
There is not sufficient room at \fI*outbuf\fP.
|
|
|
|
.TP
|
|
|
|
.B EILSEQ
|
|
|
|
An invalid multibyte sequence has been encountered in the input.
|
|
|
|
.TP
|
|
|
|
.B EINVAL
|
|
|
|
An incomplete multibyte sequence has been encountered in the input.
|
2008-08-11 20:23:22 +00:00
|
|
|
.SH VERSIONS
|
|
|
|
This function is available in glibc since version 2.1.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "CONFORMING TO"
|
2005-06-21 08:55:14 +00:00
|
|
|
POSIX.1-2001.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR iconv_close (3),
|
|
|
|
.BR iconv_open (3)
|