Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       iconv - Conversion de jeux de caractères

SYNOPSIS

       #include <iconv.h>

       size_t iconv(iconv_t cd,
                    char **inbuf, size_t *inbytesleft,
                    char **outbuf, size_t *outbytesleft);

DESCRIPTION

       La  fonction iconv() convertit une séquence de caractères dans un jeu de caractères en une
       séquence de caractères dans un autre jeu de caractères. Le paramètre cd est un descripteur
       de  conversion  (en  anglais  conversion  descriptor),  créé  préalablement par un appel à
       iconv_open(3) ; le descripteur de conversion définit les  jeux  de  caractères  qu'iconv()
       utilise  pour cette conversion. Le paramètre inbuf est l'adresse d'une variable qui pointe
       vers le premier caractère de la séquence d'entrée ;  le  paramètre  outbuf  est  l'adresse
       d'une  variable  qui  pointe vers le premier octet disponible dans le tampon de sortie, et
       outbytesleft indique le nombre d'octets disponibles dans le tampon de sortie.

       Cette routine est principalement utilisée quand inbuf et *inbuf sont  non  NULL.  Dans  ce
       cas,  iconv()  convertit  la  séquence  multioctet  débutant  en  *inbuf  en  une séquence
       multioctet commençant en *outbuf. Au plus *inbytesleft octets seront lus,  en  partant  de
       *inbuf. Au plus *outbytesleft octets seront écrits en commençant en *outbuf.

       La  fonction  iconv() convertit un caractère multioctet à la fois. Pour chaque conversion,
       elle augmente *inbuf et diminue *inbytesleft du nombre  d'octets  d'entrée  convertis,  et
       elle  augmente *outbuf et diminue *outbytesleft du nombre d'octets de sortie écrits et met
       à jour l'état de conversion contenu au sein de  cd.  La  conversion  peut  s'arrêter  pour
       quatre raisons :

       1. Une  séquence  multioctet  invalide  a  été  trouvée  en entrée. Dans ce cas, errno est
          définie à EILSEQ et la fonction renvoie (size_t) -1. Ensuite, *inbuf  pointera  sur  le
          début de la séquence multioctet invalide.

       2. La   séquence  d'entrée  multioctet  a  été  convertie  entièrement,  c'est-à-dire  que
          *inbytesleft est descendu jusqu'à zéro. Dans ce  cas,  iconv()  renvoie  le  nombre  de
          conversions irréversibles réalisées durant l'appel.

       3. Une  séquence  multioctet  incomplète  a  été trouvée alors que la séquence d'entrée se
          terminait. Dans ce cas, errno est définie à EINVAL et la fonction renvoie  (size_t) -1.
          Ensuite, *inbuf pointera sur le début de la séquence multioctet incomplète.

       4. Le tampon de sortie n'a plus de place pour stocker le prochain caractère converti. Dans
          ce cas, errno contiendra E2BIG et la fonction renverra (size_t) -1.

       Une autre possibilité se présente quand inbuf ou *inbuf est NULL, mais si  ni  outbuf,  ni
       *outbuf ne le sont. Dans ce cas, la fonction iconv() essaye de mettre l'état de conversion
       de cd dans l'état initial, et de mémoriser la séquence  de  décalage  correspondante  dans
       *outbuf.  Au  maximum  *outbytesleft  octets seront écrits en commençant en *outbuf. Si le
       tampon de sortie ne contient pas assez de place pour réinitialiser la séquence, errno  est
       définie  à  E2BIG  et  la  fonction  renvoie  (size_t) -1. Sinon, elle augmente *outbuf et
       diminue *outbytesleft du nombre d'octets écrits.

       Un troisième cas est possible, si inbuf ou *inbuf est NULL, et si outbuf  ou  *outbuf  est
       NULL.  Dans  ce  cas,  la  fonction iconv() replace l'état de conversion cd dans l'état de
       conversion initial.

VALEUR RENVOYÉE

       La fonction iconv() renvoie le nombre de  caractères  convertis  de  manière  irréversible
       durant  l'appel. Les conversions réversibles ne sont pas prises en compte. En cas d'erreur
       la fonction remplit errno et renvoie (size_t) -1.

ERREURS

       Les erreurs suivantes peuvent se produire, entre autres :

       E2BIG  Il n'y a pas assez de place dans *outbuf.

       EILSEQ Une séquence multioctet invalide a été trouvée en entrée.

       EINVAL Une séquence multioctet incomplète a été trouvée en entrée.

VERSIONS

       Cette fonction est disponible dans la glibc depuis la version 2.1.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Bien qu'inbuf et outbuf soient déclarés de type char **, cela  ne  signifie  pas  que  les
       objets  vers  lesquels  ils  pointent  puissent  être  interprétés  comme  des  chaînes de
       caractères C ou comme des tableaux de caractères ; l'interprétation des séquences d'octets
       comme  caractères  est  gérée  de  manière  interne  par les fonctions de conversion. Dans
       certains jeux de caractères, un octet nul peut  être  une  partie  valide  d'un  caractère
       multioctet.

       Celui qui appelle iconv() doit s'assurer que les pointeurs passés à la fonction permettent
       d'accéder aux caractères dans le jeu de  caractères  approprié.  Il  faut  en  particulier
       assurer  un  alignement correct sur les plateformes qui ont des exigences très strictes en
       matière d'alignement.

VOIR AUSSI

       iconv_close(3), iconv_open(3)

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <http://po4a.alioth.debian.org/>  par l'équipe de traduction francophone au sein du projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <http://www.blaess.fr/christophe/>   (1996-2003),    Alain    Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Florentin  Duneau  et  l'équipe francophone de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>   ou   par   un  rapport  de  bogue  sur  le  paquet
       manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».