.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) Bruno Haible .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" References consulted: .\" GNU glibc-2 source code and manual .\" OpenGroup's Single UNIX specification .\" http://www.UNIX-systems.org/online.html .\" .\" 2000-06-30 correction by Yuichi SATO .\" 2000-11-15 aeb, fixed prototype .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH iconv 3 "2 mai 2024" "Pagini de manual de Linux 6.9.1" .SH NUME iconv \- efectuează conversia setului de caractere .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .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 DESCRIERE Funcția \fBiconv\fP() convertește o secvență de caractere dintr\-o codificare de caractere într\-o secvență de caractere dintr\-o altă codificare de caractere. Argumentul \fIcd\fP este un descriptor de conversie, creat anterior printr\-un apel la \fBiconv_open\fP(3); descriptorul de conversie definește codificările de caractere pe care \fBiconv\fP() le utilizează pentru conversie. Argumentul \fIinbuf\fP este adresa unei variabile care indică primul caracter din secvența de intrare; \fIinbytesleft\fP indică numărul de octeți din memoria tampon respectivă. Argumentul \fIoutbuf\fP este adresa unei variabile care indică primul octet disponibil în memoria tampon de ieșire; \fIoutbytesleft\fP indică numărul de octeți disponibili în memoria tampon de ieșire. .P Cazul principal este atunci când \fIinbuf\fP nu este NULL și \fI*inbuf\fP nu este NULL. În acest caz, funcția \fBiconv\fP() convertește secvența de mai mulți octeți care începe la \fI*inbuf\fP într\-o secvență de mai mulți octeți care începe la \fI*outbuf\fP. Vor fi citiți cel mult \fI*inbytesleft\fP octeți, începând de la \fI*inbuf\fP. Se vor scrie cel mult \fI*outbytesleft\fP octeți, începând de la \fI*outbuf\fP. .P Funcția \fBiconv\fP() convertește câte un caracter multi\-octet la un moment dat și, pentru fiecare convertire de caracter, mărește \fI*inbuf\fP și descrește \fI*inbytesleft\fP cu numărul de octeți de intrare convertiți, mărește \fI*outbuf\fP și descrește \fI*outbytesleft\fP cu numărul de octeți de ieșire convertiți și actualizează starea de conversie conținută în \fIcd\fP. În cazul în care codificarea caracterelor de intrare este de tip statutar, funcția \fBiconv\fP() poate, de asemenea, să convertească o secvență de octeți de intrare într\-o actualizare a stării de conversie fără a produce niciun octet de ieșire; o astfel de intrare se numește \fIsecvență „shift”\fP. Conversia se poate opri din cinci motive: .IP \[bu] 3 O secvență multi\-octet nevalidă este întâlnită la intrare. În acest caz, configurează \fIerrno\fP la \fBEILSEQ\fP și returnează \fI(size_t)\ \-1\fP. \fI*inbuf\fP rămâne îndreptat spre începutul secvenței multi\-octet nevalide. .IP \[bu] Se întâlnește o secvență multi\-octet care este validă, dar care nu poate fi convertită în codificarea caracterelor de ieșire. Această condiție depinde de implementare și de descriptorul de conversie. În biblioteca GNU C și GNU libiconv, dacă \fIcd\fP a fost creat fără sufixul \fB//TRANSLIT\fP sau \fB//IGNORE\fP, conversia este strictă: conversiile cu pierderi produc această condiție. Dacă a fost specificat sufixul \fB//TRANSLIT\fP, transliterarea poate evita această condiție în unele cazuri. În biblioteca musl C, această condiție nu poate apărea deoarece se utilizează o conversie în \fB\[aq]*\[aq]\fP ca soluție de rezervă. Nici în implementările FreeBSD, NetBSD și Solaris ale \fBiconv\fP() nu poate apărea această condiție, deoarece se utilizează o conversie în \fB\[aq]?\[aq]\fP ca soluție de rezervă. Atunci când această condiție este îndeplinită, \fBiconv\fP() stabilește \fIerrno\fP la \fBEILSEQ\fP și returnează \fI(size_t)\ \-1\fP. \fI*inbuf\fP este lăsată indicând începutul secvenței multi\-octet neconvertibile. .IP \[bu] Secvența de octeți de intrare a fost convertită în întregime, adică \fI*inbytesleft\fP a coborât la 0. În acest caz, \fBiconv\fP() returnează numărul de conversii nereversibile efectuate în timpul acestui apel. .IP \[bu] O secvență de mai mulți octeți incompletă este întâlnită la intrare, iar secvența de octeți de intrare se termină după ea. În acest caz, se stabilește \fIerrno\fP la \fBEINVAL\fP și se returnează \fI(size_t)\ \-1\fP. \fI*inbuf\fP rămâne îndreptat spre începutul secvenței multi\-octet incomplete. .IP \[bu] Memoria tampon de ieșire nu mai are loc pentru următorul caracter convertit. În acest caz, configurează \fIerrno\fP la \fBE2BIG\fP și returnează \fI(size_t)\ \-1\fP. .P Un caz diferit este atunci când \fIinbuf\fP este NULL sau \fI*inbuf\fP este NULL, dar \fIoutbuf\fP nu este NULL și \fI*outbuf\fP nu este NULL. În acest caz, funcția \fBiconv\fP() încearcă să fixeze starea de conversie a lui \fIcd\fP la starea inițială și să stocheze o secvență de transformare corespunzătoare în \fI*outbuf\fP. Se vor scrie cel mult \fI*outbytesleft\fP octeți, începând de la \fI*outbuf\fP. Dacă memoria tampon de ieșire nu mai are loc pentru această secvență de reinițializare, configurează \fIerrno\fP la \fBE2BIG\fP și returnează \fI(size_t)\ \-1\fP. În caz contrar, se incrementează \fI*outbuf\fP și se decrementează \fI*outbytesleft\fP cu numărul de octeți scriși. .P Un al treilea caz este atunci când \fIinbuf\fP este NULL sau \fI*inbuf\fP este NULL, iar \fIoutbuf\fP este NULL sau \fI*outbuf\fP este NULL. În acest caz, funcția \fBiconv\fP() stabilește starea de conversie a lui \fIcd\fP la starea inițială. .SH "VALOAREA RETURNATĂ" Funcția \fBiconv\fP() returnează numărul de caractere convertite într\-un mod nereversibil în timpul acestui apel; conversiile reversibile nu sunt luate în considerare. În caz de eroare, \fBiconv\fP() returnează \fI(size_t)\ \-1\fP și configurează \fIerrno\fP pentru a indica eroarea. .SH ERORI\-IEȘIRE Pot apărea, printre altele, următoarele erori: .TP \fBE2BIG\fP Nu există spațiu suficient la \fI*outbuf\fP. .TP \fBEILSEQ\fP O secvență multi\-octet nevalidă a fost întâlnită la intrare. .TP \fBEINVAL\fP O secvență multi\-octet incompletă a fost întâlnită la intrare. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBiconv\fP() T} Siguranța firelor MT\-Safe race:cd .TE .P Funcția \fBiconv\fP() este MT\-Safe, atâta timp cât apelanții iau măsuri de excludere reciprocă pentru argumentul \fIcd\fP. .SH STANDARDE POSIX.1\-2008. .SH ISTORIC glibc 2.1. POSIX.1\-2001. .SH NOTE În fiecare serie de apeluri către \fBiconv\fP(), ultimul ar trebui să fie unul cu \fIinbuf\fP sau \fI*inbuf\fP egal cu NULL, pentru a elimina orice intrare parțial convertită. .P Deși \fIinbuf\fP și \fIoutbuf\fP sunt tipizate ca \fIchar\ **\fP, acest lucru nu înseamnă că obiectele pe care le indică pot fi interpretate ca șiruri de caractere C sau ca matrice de caractere: interpretarea secvențelor de octeți de caractere este gestionată în mod intern de către funcțiile de conversie. În unele codificări, un octet zero poate fi o parte validă a unui caracter multi\-octet. .P Cel care apelează \fBiconv\fP() trebuie să se asigure că indicatorii trecuți în funcție sunt adecvați pentru accesarea caracterelor din setul de caractere corespunzător. Aceasta include asigurarea alinierii corecte pe platformele care au restricții stricte privind alinierea. .SH "CONSULTAȚI ȘI" \fBiconv_close\fP(3), \fBiconv_open\fP(3), \fBiconvconfig\fP(8) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .