.\" -*- 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 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم iconv \- إجراء تحويل مجموعة المحارف .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .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 الوصف تحوّل الدالة \fBiconv\fP() سلسلة من المحارف في ترميز محارف واحد إلى سلسلة من المحارف في ترميز محارف آخر. الوسيط \fIcd\fP هو واصف تحويل، أُنشئ سابقًا باستدعاء \fBiconv_open\fP(3)؛ يحدد واصف التحويل ترميزات المحارف التي تستخدمها \fBiconv\fP() للتحويل. الوسيط \fIinbuf\fP هو عنوان متغير يشير إلى أول محرف في سلسلة الإدخال؛ يشير \fIinbytesleft\fP إلى عدد البايتات في ذلك المخزن المؤقت. الوسيط \fIoutbuf\fP هو عنوان متغير يشير إلى أول بايت متاح في مخزن الإخراج المؤقت؛ يشير \fIoutbytesleft\fP إلى عدد البايتات المتاحة في مخزن الإخراج المؤقت. .P الحالة الرئيسية هي عندما لا يكون \fIinbuf\fP NULL ولا \fI*inbuf\fP NULL. في هذه الحالة، تحوّل الدالة \fBiconv\fP() سلسلة متعددة البايتات التي تبدأ عند \fI*inbuf\fP إلى سلسلة متعددة البايتات تبدأ عند \fI*outbuf\fP. سيُقرأ على الأكثر \fI*inbytesleft\fP بايت، بدءًا من \fI*inbuf\fP. سيُكتب على الأكثر \fI*outbytesleft\fP بايت، بدءًا من \fI*outbuf\fP. .P تقوم الدالة \fBiconv\fP() بتحويل محرف متعدد البايتات واحد في كل مرة، ولكل تحويل محرف تزيد \fI*inbuf\fP وتنقص \fI*inbytesleft\fP بعدد بايتات المدخلات المحولة، وتزيد \fI*outbuf\fP وتنقص \fI*outbytesleft\fP بعدد بايتات المخرجات المحولة، وتحدث حالة التحويل الموجودة في \fIcd\fP. إذا كان ترميز المحارف للمدخلات ذا حالة، يمكن للدالة \fBiconv\fP() أيضاً تحويل تسلسل من بايتات المدخلات إلى تحديث لحالة التحويل دون إنتاج أي بايتات مخرجات؛ يُسمى هذا المدخل \fIتسلسل\ إزاحة\fP. يمكن أن يتوقف التحويل لخمسة أسباب: .IP \[bu] 3 تمت مصادفة سلسلة متعددة البايتات غير صالحة في الإدخال. في هذه الحالة، تضبط \fIerrno\fP على \fBEILSEQ\fP وتُرجع \fI(size_t)\ \-1\fP. يُترك \fI*inbuf\fP يشير إلى بداية السلسلة متعددة البايتات غير الصالحة. .IP \[bu] تمت مصادفة سلسلة متعددة البايتات صالحة ولكن لا يمكن ترجمتها إلى ترميز محارف الإخراج. تعتمد هذه الحالة على التنفيذ وعلى واصف التحويل. في مكتبة GNU C وGNU libiconv، إذا أُنشئ \fIcd\fP بدون اللاحقة \fB//TRANSLIT\fP أو \fB//IGNORE\fP، يكون التحويل صارمًا: تنتج التحويلات ذات الفقدان هذه الحالة. إذا حُددت اللاحقة \fB//TRANSLIT\fP، يمكن للنقل الحرفي تجنب هذه الحالة في بعض الحالات. في مكتبة musl C، لا يمكن أن تحدث هذه الحالة لأن تحويلاً إلى \fB\[aq]*\[aq]\fP يُستخدم كحل احتياطي. في تطبيقات FreeBSD وNetBSD وSolaris لـ \fBiconv\fP()، لا يمكن أن تحدث هذه الحالة أيضًا، لأن تحويلاً إلى \fB\[aq]?\[aq]\fP يُستخدم كحل احتياطي. عند استيفاء هذه الحالة، تضبط \fBiconv\fP() \fIerrno\fP على \fBEILSEQ\fP وتُرجع \fI(size_t)\ \-1\fP. يُترك \fI*inbuf\fP يشير إلى بداية السلسلة متعددة البايتات غير القابلة للتحويل. .IP \[bu] تم تحويل سلسلة بايتات الإدخال بالكامل، أي أن \fI*inbytesleft\fP أصبح 0. في هذه الحالة، تُرجع \fBiconv\fP() عدد التحويلات غير القابلة للعكس التي أُجريت خلال هذا الاستدعاء. .IP \[bu] تمت مصادفة سلسلة متعددة البايتات غير مكتملة في الإدخال، وتنتهي سلسلة بايتات الإدخال بعدها. في هذه الحالة، تضبط \fIerrno\fP على \fBEINVAL\fP وتُرجع \fI(size_t)\ \-1\fP. يُترك \fI*inbuf\fP يشير إلى بداية السلسلة متعددة البايتات غير المكتملة. .IP \[bu] لا توجد مساحة كافية في مخزن الإخراج المؤقت للمحرف المحول التالي. في هذه الحالة، تضبط \fIerrno\fP على \fBE2BIG\fP وتُرجع \fI(size_t)\ \-1\fP. .P حالة مختلفة هي عندما يكون \fIinbuf\fP NULL أو \fI*inbuf\fP NULL، ولكن \fIoutbuf\fP ليس NULL و\fI*outbuf\fP ليس NULL. في هذه الحالة، تحاول الدالة \fBiconv\fP() ضبط حالة تحويل \fIcd\fP على الحالة الأولية وتخزين تسلسل إزاحة مطابق عند \fI*outbuf\fP. سيُكتب على الأكثر \fI*outbytesleft\fP بايت، بدءًا من \fI*outbuf\fP. إذا لم تكن هناك مساحة كافية في مخزن الإخراج المؤقت لتسلسل إعادة الضبط هذا، تضبط \fIerrno\fP على \fBE2BIG\fP وتُرجع \fI(size_t)\ \-1\fP. وإلا، تزيد \fI*outbuf\fP وتنقص \fI*outbytesleft\fP بعدد البايتات المكتوبة. .P حالة ثالثة هي عندما يكون \fIinbuf\fP NULL أو \fI*inbuf\fP NULL، ويكون \fIoutbuf\fP NULL أو \fI*outbuf\fP NULL. في هذه الحالة، تضبط الدالة \fBiconv\fP() حالة تحويل \fIcd\fP على الحالة الأولية. .SH "قيمة الإرجاع" تُرجع الدالة \fBiconv\fP() عدد المحارف المحولة بطريقة غير قابلة للعكس خلال هذا الاستدعاء؛ لا تُحتسب التحويلات القابلة للعكس. في حالة حدوث خطأ، تُرجع \fBiconv\fP() \fI(size_t)\ \-1\fP وتضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء يمكن أن تحدث الأخطاء التالية، من بين أخطاء أخرى: .TP \fBE2BIG\fP لا توجد مساحة كافية عند \fI*outbuf\fP. .TP \fBEILSEQ\fP تمت مصادفة سلسلة متعددة البايتات غير صالحة في الإدخال. .TP \fBEINVAL\fP تمت مصادفة سلسلة متعددة البايتات غير مكتملة في الإدخال. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBiconv\fP() T} سلامة الخيوط MT\-Safe race:cd .TE .P الدالة \fBiconv\fP() آمنة للخيوط (MT\-Safe)، طالما أن المستدعين يرتبون للاستبعاد المتبادل على الوسيط \fIcd\fP. .SH المعايير POSIX.1\-2008. .SH التاريخ glibc 2.1. POSIX.1\-2001. .SH ملاحظات في كل سلسلة من استدعاءات \fBiconv\fP()، يجب أن يكون آخرها مع \fIinbuf\fP أو \fI*inbuf\fP مساوياً لـ NULL، وذلك لطرد أي مدخلات محولة جزئياً. .P على الرغم من أن \fIinbuf\fP و \fIoutbuf\fP مكتوبان كـ \fIchar\ **\fP، إلا أن هذا لا يعني أن الكائنات التي يشيران إليها يمكن تفسيرها كسلاسل محارف C أو كمصفوفات محارف: تفسير تسلسلات البايتات المحرفية يُعالج داخلياً بواسطة دوال التحويل. في بعض الترميزات، قد تكون البايتة الصفرية جزءاً صالحاً من محرف متعدد البايتات. .P يجب على مستدعي \fBiconv\fP() أن يضمن أن المؤشرات الممررة للدالة مناسبة للوصول إلى المحارف في مجموعة المحارف المناسبة. يشمل ذلك ضمان المحاذاة الصحيحة على المنصات التي لديها قيود صارمة على المحاذاة. .SH "انظر أيضًا" \fBiconv_close\fP(3)، \fBiconv_open\fP(3)، \fBiconvconfig\fP(8) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .