Man page - iconv(3)

Packages contains this manual

Available languages:

en fr es ja ru ro

Manual

iconv

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

NOM

iconv - Conversion de jeux de caractĂšres

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <iconv.h>

size_t iconv(iconv_t cd ,
char **restrict
inbuf , size_t *restrict inbytesleft ,
char **restrict
outbuf , size_t *restrict 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 . Si le jeu de caractĂšre de l’entrĂ©e est avec Ă©tat, la fonction iconv () peut aussi convertir une sĂ©quence d’octets d’entrĂ©e en une mise Ă  jour de l’état de conversion sans produire d’octet de sortie ; une entrĂ©e de ce type est appelĂ©e shift sequence . La conversion peut s’arrĂȘter pour cinq raisons :

-

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 non valable.

-

Il existe des sĂ©quences multioctet qui qui sont correctes mais qui ne peuvent pas ĂȘtre traduites dans le caractĂšre encodant la sortie. Les conditions dĂ©pendent de l’implĂ©mentation et du descripteur de conversion. Dans la bibliothĂšque C de GNU et libiconv de GNU, si cd a Ă©tĂ© créé sans le suffixe //TRANSLIT ou //IGNORE , la conversion est stricte : les conversions avec pertes produisent cette condition. Si le suffixe //TRANSLIT a Ă©tĂ© spĂ©cifiĂ©e, la translittĂ©ration peut Ă©viter cette condition dans certains cas. Dans la bibliothĂšque C de musl, cette condition ne peut pas se produire parce qu’une conversion en « * » est utilisĂ©e comme solution de repli. Dans les implĂ©mentations d’ iconv de FreeBSD, NetBSD et Solaris, la condition ne peut pas survenir parce qu’une conversion en « ? » est utilisĂ©e comme solution de repli. Quand cette condition se rencontre, iconv () dĂ©finit errno Ă  EILSEQ et renvoie (size_t) -1 . Ensuite, *inbuf pointera sur le dĂ©but de la sĂ©quence multioctet non convertible.

-

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.

-

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.

-

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, iconv () renvoie (size_t) -1 et dĂ©finit errno pour indiquer l’erreur.

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.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3888603-1.png

La fonction iconv () peut ĂȘtre appelĂ©e par plusieurs « threads » (MT-Safe) tant que les appelants s’arrangent pour exclure mutuellement l’argument cd .

STANDARDS

POSIX.1-2008.

HISTORIQUE

glibc 2.1. POSIX.1-2001.

NOTES

Dans chaque sĂ©rie d’appels Ă  iconv (), le dernier devrait ĂȘtre celui ayant inbuf ou *inbuf Ă©gal Ă  NULL, afin de purger toute entrĂ©e partiellement convertie.

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), iconvconfig (8)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Thomas Vincent <tvincent@debian.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .