.\" -*- coding: UTF-8 -*- '\" t .\" Copyright, Bruno Haible .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH iconv 3 "8 février 2026" "Pages du manuel de Linux 6.18" .SH NOM iconv \- Conversion de jeux de caractères .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP,\ \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBsize_t iconv(iconv_t \fP\fIcd\fP\fB,\fP \fB char **restrict \fP\fIinbuf\fP\fB, size_t *restrict \fP\fIinbytesleft\fP\fB,\fP \fB char **restrict \fP\fIoutbuf\fP\fB, size_t *restrict \fP\fIoutbytesleft\fP\fB);\fP .fi .SH DESCRIPTION La fonction \fBiconv\fP() 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 \fIcd\fP est un descripteur de conversion (en anglais \fIconversion descriptor\fP), créé préalablement par un appel à \fBiconv_open\fP(3) ; le descripteur de conversion définit les jeux de caractères qu'\fBiconv\fP() utilise pour cette conversion. Le paramètre \fIinbuf\fP est l'adresse d'une variable qui pointe vers le premier caractère de la séquence d'entrée ; le paramètre \fIoutbuf\fP est l'adresse d'une variable qui pointe vers le premier octet disponible dans le tampon de sortie, et \fIoutbytesleft\fP indique le nombre d'octets disponibles dans le tampon de sortie. .P Cette routine est principalement utilisée quand \fIinbuf\fP et \fI*inbuf\fP sont non NULL. Dans ce cas, \fBiconv\fP() convertit la séquence multioctet débutant en \fI*inbuf\fP en une séquence multioctet commençant en \fI*outbuf\fP. Au plus \fI*inbytesleft\fP octets seront lus, en partant de \fI*inbuf\fP. Au plus \fI*outbytesleft\fP octets seront écrits en commençant en \fI*outbuf\fP. .P The \fBiconv\fP() function converts one multibyte character at a time, and for 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. If the character encoding of the input is stateful, the \fBiconv\fP() 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. The conversion can stop for five reasons: .IP \- 3 Une séquence multioctet invalide a été trouvée en entrée. Dans ce cas, \fIerrno\fP est définie à \fBEILSEQ\fP et la fonction renvoie \fI(size_t)\ \-1\fP. Ensuite, \fI*inbuf\fP pointera sur le début de la séquence multioctet non valable. .IP \- 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 \fIcd\fP a été créé sans le suffixe \fB//TRANSLIT\fP ou \fB//IGNORE\fP, la conversion est stricte : les conversions avec pertes produisent cette condition. Si le suffixe \fB//TRANSLIT\fP 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 \fB« * »\fP est utilisée comme solution de repli. Dans les implémentations d'\fBiconv\fP de FreeBSD, NetBSD et Solaris, la condition ne peut pas survenir parce qu'une conversion en \fB« ? »\fP est utilisée comme solution de repli. Quand cette condition se rencontre, \fBiconv\fP() définit \fIerrno\fP à \fBEILSEQ\fP et renvoie \fI(size_t)\ \-1\fP. Ensuite, \fI*inbuf\fP pointera sur le début de la séquence multioctet non convertible. .IP \- La séquence d'entrée multioctet a été convertie entièrement, c'est\-à\-dire que \fI*inbytesleft\fP est descendu jusqu'à zéro. Dans ce cas, \fBiconv\fP() renvoie le nombre de conversions irréversibles réalisées durant l'appel. .IP \- Une séquence multioctet incomplète a été trouvée alors que la séquence d'entrée se terminait. Dans ce cas, \fIerrno\fP est définie à \fBEINVAL\fP et la fonction renvoie \fI(size_t)\ \-1\fP. Ensuite, \fI*inbuf\fP pointera sur le début de la séquence multioctet incomplète. .IP \- Le tampon de sortie n'a plus de place pour stocker le prochain caractère converti. Dans ce cas, \fIerrno\fP contiendra \fBE2BIG\fP et la fonction renverra \fI(size_t)\ \-1\fP. .P Une autre possibilité se présente quand \fIinbuf\fP ou \fI*inbuf\fP est NULL, mais si ni \fIoutbuf\fP, ni \fI*outbuf\fP ne le sont. Dans ce cas, la fonction \fBiconv\fP() essaye de mettre l'état de conversion de \fIcd\fP dans l'état initial, et de mémoriser la séquence de décalage correspondante dans \fI*outbuf\fP. Au maximum \fI*outbytesleft\fP octets seront écrits en commençant en \fI*outbuf\fP. Si le tampon de sortie ne contient pas assez de place pour réinitialiser la séquence, \fIerrno\fP est définie à \fBE2BIG\fP et la fonction renvoie \fI(size_t)\ \-1\fP. Sinon, elle augmente \fI*outbuf\fP et diminue \fI*outbytesleft\fP du nombre d'octets écrits. .P Un troisième cas est possible, si \fIinbuf\fP ou \fI*inbuf\fP est NULL, et si \fIoutbuf\fP ou \fI*outbuf\fP est NULL. Dans ce cas, la fonction \fBiconv\fP() replace l'état de conversion \fIcd\fP dans l'état de conversion initial. .SH "VALEUR RENVOYÉE" La fonction \fBiconv\fP() 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, \fBiconv\fP() renvoie \fI(size_t)\ \-1\fP et définit \fIerrno\fP pour indiquer l'erreur. .SH ERREURS Les erreurs suivantes peuvent se produire, entre autres\ : .TP \fBE2BIG\fP Il n'y a pas assez de place dans \fI*outbuf\fP. .TP \fBEILSEQ\fP Une séquence multioctet invalide a été trouvée en entrée. .TP \fBEINVAL\fP Une séquence multioctet incomplète a été trouvée en entrée. .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interface Attribut Valeur T{ .na .nh \fBiconv\fP() T} Sécurité des threads MT\-Safe race:cd .TE .P La fonction \fBiconv\fP() peut être appelée par plusieurs « threads » (MT\-Safe) tant que les appelants s'arrangent pour exclure mutuellement l'argument \fIcd\fP. .SH NORMES POSIX.1\-2008. .SH HISTORIQUE glibc 2.1. POSIX.1\-2001. .SH NOTES Dans chaque série d'appels à \fBiconv\fP(), le dernier devrait être celui ayant \fIinbuf\fP ou \fI*inbuf\fP égal à NULL, afin de purger toute entrée partiellement convertie. .P Bien qu'\fIinbuf\fP et \fIoutbuf\fP soient déclarés de type \fIchar\ **\fP, 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. .P Celui qui appelle \fBiconv\fP() 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. .SH "VOIR AUSSI" \fBiconv_close\fP(3), \fBiconv_open\fP(3), \fBiconvconfig\fP(8) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Thomas Vincent et Jean-Pierre Giraud . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .