.de XA .RS .PP \\$1 .RE .PP .. .TH "enca" "1" "Sep 2009" "enca 1.11" " " .SH "نام (NAME)" enca \- تشخیص و تبدیل کدگذاری فایل‌های متنی . . .SH "خلاصه دستور (SYNOPSIS)" .PP \fBenca\fR [\fB\-L\fR \fILANGUAGE\fR] [\fIOPTION\fR]... [\fIFILE\fR]... .br \fBenconv\fR [\fB\-L\fR \fILANGUAGE\fR] [\fIOPTION\fR]... [\fIFILE\fR]... . .SH "مقدمه و مثال‌ها (INTRODUCTION AND EXAMPLES)" .PP اگر به قدر کافی خوش‌شانس باشید، تنها دو موردی که نیاز به دانستن آن‌ها خواهید داشت عبارتند از: دستور .XA "enca \fIFILE\fR" به شما خواهد گفت که فایل \fIFILE\fR از چه کدگذاری استفاده می‌کند (بدون تغییر دادن آن)، و .XA "enconv \fIFILE\fR" فایل \fIFILE\fR را به کدگذاری بومی locale شما تبدیل خواهد کرد. برای تبدیل فایل به کدگذاری دیگری، از گزینهٔ \fB-x\fR استفاده کنید (برای جزئیات، مدخل \fB\-x\fR در بخش \fBگزینه‌ها (OPTIONS)\fR و بخش‌های \fBCONVERSION\fR و \fBENCODINGS\fR را ببینید). .PP هر دوی آن‌ها با چندین فایل و همچنین ورودی (خروجی) استاندارد نیز کار می‌کنند. به عنوان مثال: .XA "enca \-x latin2 2,1) /4321@ترتیب بایت معکوس‌شده در چهارتایی‌ها (1,2,3,4 \-> 4,3,2,1) N.A.@تکه‌های پیوسته‌شده از هر دو نوع little و big endian /qp@کدگذاری‌شده به صورت Quoted-printable .TE .PP توجه داشته باشید که برخی سطوح به جای شناسه دارای N.A. هستند\-\-آن‌ها را نمی‌توان در خط فرمان مشخص کرد و تنها می‌توانند توسط Enca گزارش شوند. این امر تعمدی است زیرا آن‌ها به جای نمایش یک سطح واقعی، صرفاً به شما اطلاع می‌دهند که چرا فایل نمی‌تواند از نظر سطح سازگار (surface-consistent) در نظر گرفته شود. .PP هر مجموعه‌نویسه سطح طبیعی خود را دارد (که در recode به آن \(lqضمنی\(rq یا \(lqimplied\(rq گفته می‌شود) که گزارش نمی‌شود؛ برای نمونه، برای مجموعه‌نویسهٔ IBM 852، این سطح \(lqپایان‌دهنده‌های خط CRLF\(rq است. برای کدگذاری‌های UCS، حالت big endian به عنوان سطح طبیعی در نظر گرفته می‌شود؛ ترتیب بایت‌های غیرمعمول از جایگشت‌های 21 و 4321 ساخته می‌شوند: 2143 صرفاً به صورت 21 گزارش می‌شود، در حالی که 3412 به عنوان ترکیبی از 4321 و 21 گزارش می‌شود. .PP کدگذاری مضاعف UTF-8 (به صورت Doubly-encoded UTF-8) نه مجموعه‌نویسه است و نه سطح، و صرفاً گزارش می‌شود. .PP . .SS "دربارهٔ مجموعه‌نویسه‌ها، کدگذاری‌ها و سطوح (About charsets, encodings and surfaces)" .PP مجموعه‌نویسه (Charset) مجموعه‌ای از موجودیت‌های نویسه‌ای است، در حالی که کدگذاری (encoding) نمایش آن در قالب بایت‌ها و بیت‌هاست. در Enca، واژهٔ \fIencoding\fR هم‌معنی با \(lqنمایش متن\(rq (\(lqrepresentation of text\(rq) است؛ یعنی رابطهٔ بین توالی موجودیت‌های نویسه‌ای تشکیل‌دهندهٔ متن و توالی بایت‌های (بیت‌های) تشکیل‌دهندهٔ فایل. .PP بنابراین، کدگذاری هم مجموعه‌نویسه است و هم به‌اصطلاح سطح (پایان‌دهنده‌های خط، ترتیب بایت‌ها، نویسه‌های ترکیبی، تبدیل Base64 و غیره). با این وجود، کار با برخی جفت‌های {charset,surface} مانند مجموعه‌نویسه‌های واقعی راحت‌تر است. بنابراین، همانند \fIrecode\fR(1)، تمام کدگذاری‌های \-UCS و \-UTF از مجموعه‌نویسهٔ جهانی (Universal character set) مجموعه‌نویسه نامیده می‌شوند. لطفاً برای جزئیات بیشتر در این باره، به مستندات recode مراجعه کنید. .PP تنها ویژگی خوب دربارهٔ سطوح این است: تا زمانی که شروع به دستکاری آن‌ها نکنید، Enca نیز کاری با آن‌ها نخواهد داشت و تا جای ممکن تلاش می‌کند مانند برنامه‌ای ناآگاه از سطوح (surface-unaware) رفتار کند، حتی هنگام ارتباط با recode. .PP . . .SH "زبان‌ها (LANGUAGES)" .PP ابزار Enca برای کارکرد مطمئن، حداقل در مورد کدگذاری‌های معمول ۸بیتی، باید زبان فایل‌های ورودی را بداند. کدگذاری‌های چندبایتی باید برای هر زبان لاتین، سیریلیک یا یونانی شناسایی شوند. .PP می‌توانید (یا مجبورید) از گزینهٔ \fB\-L\fR برای مشخص کردن زبان به Enca استفاده کنید. از آنجا که افراد بیشتر اوقات با فایل‌هایی به همان زبانی کار می‌کنند که لوکال‌های خود را برای آن پیکربندی کرده‌اند، Enca تلاش می‌کند با بررسی مقدار \fBLC_CTYPE\fR و دیگر دسته‌های لوکال (لطفاً \fIlocale\fR(7) را ببینید) و استفاده از آن برای زبان در زمانی که زبانی را مشخص نکرده‌اید، زبان را حدس بزند. البته این حدس ممکن است کاملاً اشتباه باشد و پاسخ‌هایی بی‌پایه بدهد و به فایل‌هایتان آسیب بزند، بنابراین لطفاً استفاده از گزینهٔ \fB\-L\fR را فراموش نکنید. همچنین می‌توانید از متغیر محیطی \fBENCAOPT\fR برای تنظیم یک زبان پیش‌فرض استفاده کنید (بخش \fBمحیط (ENVIRONMENT)\fR را ببینید). .PP زبان‌های زیر توسط Enca پشتیبانی می‌شوند (هر زبان همراه با کدگذاری‌های ۸بیتیِ پشتیبانی‌شده فهرست شده است): .PP .TS tab (@); l l. Belarusian @CP1251 IBM866 ISO\-8859\-5 KOI8\-UNI maccyr IBM855 Bulgarian @CP1251 ISO\-8859\-5 IBM855 maccyr ECMA\-113 Czech @ISO\-8859\-2 CP1250 IBM852 KEYBCS2 macce KOI\-8_CS_2 CORK Estonian @ISO\-8859\-4 CP1257 IBM775 ISO\-8859\-13 macce baltic Finnish @ISO\-8859\-4 CP1257 Croatian @CP1250 ISO\-8859\-2 IBM852 macce CORK Hungarian @ISO\-8859\-2 CP1250 IBM852 macce CORK Lithuanian @CP1257 ISO\-8859\-4 IBM775 ISO\-8859\-13 macce baltic Latvian @CP1257 ISO\-8859\-4 IBM775 ISO\-8859\-13 macce baltic Polish @ISO\-8859\-2 CP1250 IBM852 macce ISO\-8859\-13 ISO\-8859\-16 baltic CORK Russian @KOI8\-R CP1251 ISO\-8859\-5 IBM866 maccyr Slovak @CP1250 ISO\-8859\-2 IBM852 KEYBCS2 macce KOI\-8_CS_2 CORK Slovene @ISO\-8859\-2 CP1250 IBM852 macce CORK Ukrainian @CP1251 IBM855 ISO\-8859\-5 CP1125 KOI8\-U maccyr Chinese @GBK BIG5 HZ none @ .TE .PP زبان ویژهٔ \fBnone\fR را می‌توان به صورت خلاصه به عنوان \fB__\fR به کار برد؛ این زبان حاوی هیچ کدگذاری ۸بیتی نیست، بنابراین تنها کدگذاری‌های چندبایتی شناسایی می‌شوند. .PP همچنین می‌توانید به جای زبان‌ها از نام‌های محلی (locale) استفاده کنید: .TS tab (@); l l. Belarusian @be Bulgarian @bg Czech @cs Estonian @et Finnish @fi Croatian @hr Hungarian @hu Lithuanian @lt Latvian @lv Polish @pl Russian @ru Slovak @sk Slovene @sl Ukrainian @uk Chinese @zh .TE .PP . ..SH "ویژگی‌ها (FEATURES)" .PP چندین ویژگی Enca به آنچه در سیستم شما در دسترس است و نحوهٔ کامپایل آن بستگی دارد. می‌توانید فهرست آن‌ها را با .XA "enca \-\-version" به دست آورید. علامت مثبت پیش از نام یک ویژگی به معنای در دسترس بودن آن است و علامت منفی نشان می‌دهد که این ساخت فاقد آن ویژگی خاص است. .PP \fBlibrecode\-interface\fR. برنامهٔ Enca دارای واسطی برای توابع تبدیل مجموعه‌نویسه در کتابخانهٔ GNU recode است. .sp \fBiconv\-interface\fR. برنامهٔ Enca دارای واسطی برای توابع تبدیل مجموعه‌نویسهٔ UNIX98 iconv است. .sp \fBexternal\-converter\fR. برنامهٔ Enca می‌تواند از برنامه‌های تبدیل خارجی استفاده کند (در صورتی که برنامهٔ مناسبی نصب شده باشد). .sp \fBlanguage\-detection\fR. برنامهٔ Enca تلاش می‌کند زبان (\fB\-L\fR) را از روی لوکال‌ها حدس بزند. دست‌کم در تئوری، به گزینهٔ \fB\-\-language\fR نیازی نخواهید داشت. .sp \fBlocale\-alias\fR. برنامهٔ Enca قادر است نام‌های مستعار لوکال را که برای نام‌های زبان استفاده می‌شوند، رمزگشایی و بازشناسی کند. .sp \fBtarget\-charset\-auto\fR. برنامهٔ Enca تلاش می‌کند مجموعه‌نویسهٔ ترجیحی شما را از لوکال‌ها تشخیص دهد. گزینهٔ \fB\-\-auto\-convert\fR و فراخوانی Enca به‌صورت \fBenconv\fR دست‌کم از نظر تئوری کار می‌کند. .sp \fBENCAOPT\fR. برنامهٔ Enca قادر است این متغیر محیطی را پیش از پارامترهای خط فرمان به‌درستی تجزیه کند. موارد ساده‌ای مانند \fBENCAOPT="\-L uk"\fR حتی بدون این ویژگی نیز کار خواهند کرد. .PP . . .SH "محیط (ENVIRONMENT)" .PP متغیر \fBENCAOPT\fR می‌تواند مجموعه‌ای از گزینه‌های پیش‌فرض Enca را در خود نگه دارد. محتوای آن پیش از آرگومان‌های خط فرمان تفسیر می‌شود. متأسفانه این ویژگی در همه‌جا کار نمی‌کند (باید ویژگی +ENCAOPT وجود داشته باشد). .PP متغیرهای \fBLC_CTYPE\fR، \fBLC_COLLATE\fR و \fBLC_MESSAGES\fR (که احتمالاً از \fBLC_ALL\fR یا \fBLANG\fR به ارث رسیده‌اند) برای حدس زدن زبان شما استفاده می‌شوند (باید ویژگی +language-detection وجود داشته باشد). .PP متغیر \fBDEFAULT_CHARSET\fR می‌تواند توسط \fBenconv\fR به عنوان مجموعه‌نویسهٔ هدف پیش‌فرض استفاده شود. .PP . . .SH "خطاها (DIAGNOSTICS)" .PP برنامهٔ Enca زمانی که تمامی فایل‌های ورودی با موفقیت پردازش شوند کد خروج\~0 را برمی‌گرداند (یعنی تمام کدگذاری‌ها شناسایی شده و در صورت درخواست تبدیل، همهٔ فایل‌ها به کدگذاری خواسته‌شده تبدیل شده باشند). کد خروج\~1 زمانی بازگردانده می‌شود که Enca نتواند کدگذاری فایلی را تشخیص دهد یا تبدیل را روی فایل ورودی انجام دهد، چرا که به اندازهٔ کافی هوشمند نیست. کد خروج\~2 در صورت بروز مشکلات جدی (مانند خطاهای I/O) برگردانده می‌شود. .PP . . .SH "امنیت (SECURITY)" .PP قاعدتاً باید این امکان وجود داشته باشد که اجازه دهیم Enca بدون نظارت کار کند؛ این هدف آن است. با این حال: .PP هیچ تضمینی وجود ندارد که تشخیص به‌صورت ۱۰۰٪ کار کند. به آن تکیه نکنید، زیرا ممکن است داده‌های ارزشمند خود را به سادگی از دست بدهید. .PP از enca (برنامهٔ اجرایی) استفاده نکنید؛ اگر چیزی می‌خواهید که شبیه به امنیت باشد، در عوض به libenca پیوند برقرار کنید. در این صورت باید تبدیل نهایی را خودتان انجام دهید. .PP از مبدل‌های خارجی استفاده نکنید. در حالت ایده‌آل، آن‌ها را در زمان کامپایل غیرفعال کنید. .PP مراقب \fBENCAOPT\fR و تمام حدس‌های خودکار درونی که موارد مختلف را از متغیرهای محیطی، به‌ویژه لوکال‌ها استخراج می‌کنند، باشید. .PP . ..SH "همچنین ببینید (SEE ALSO)" .PP \fIautoconvert\fR(1), \fIcstocs\fR(1), \fIfile\fR(1), \fIiconv\fR(1), \fIiconv\fR(3), \fInl_langinfo\fR(3), \fImap\fR(1), \fIpiconv\fR(1), \fIrecode\fR(1), \fIlocale\fR(5), \fIlocale\fR(7), \fIltt\fR(1), \fIumap\fR(1), \fIunicode\fR(7), \fIutf-8\fR(7), \fIxcode\fR(1) .PP . . .SH "باگ‌های شناخته‌شده (KNOWN BUGS)" .PP این برنامه باگ‌های \fIناشناخته\fR بسیار زیادی دارد. .PP ایده استفاده از مقدار \fBLC_*\fR برای تعیین زبان مسلماً احمقانه است. با این حال من آن را دوست دارم. .PP این برنامه پیش از دستکاری فایل‌ها، نمی‌تواند از آن‌ها نسخه پشتیبان تهیه کند. .PP در شرایطی خاص، ممکن است روی سیستم‌های فایل >31bit و/یا از طریق NFS رفتاری نادرست داشته باشد (هر دو آزمایش‌نشده هستند، اما در عمل نباید مشکلی ایجاد کنند). .PP مبدل داخلی، نویسه `ch' را از \fIKOI8-CS2\fR تبدیل نمی‌کند، و احتمالاً برخی نویسه‌های دیگر را نیز که در هر صورت احتمالاً هرگز نامشان را نشنیده‌اید. .PP تشخیص نوع EOL روی فایل‌های با کدگذاری Quoted-printable ضعیف عمل می‌کند. این مورد باید روزی برطرف شود. .PP هیچ گزینه خط فرمانی برای تنظیم پارامترهای libenca وجود ندارد. این موضوع عمدی است (Enca باید همان کاری را که منظور است انجام دهد \- DWIM) اما گاهی مایه دردسر است. .PP این صفحه راهنما بیش از حد طولانی است، به‌ویژه این بخش. البته اهمیتی ندارد، چرا که هیچ‌کس آن را نمی‌خواند. .PP گزارش‌های باگ را به ارسال کنید. . . .SH "دانستنی‌ها (TRIVIA)" .PP برنامه Enca سرنام Extremely Naive Charset Analyser است. با این وجود، عبارت `enc' در اصل از `encoding' آمده است، بنابراین `e'\~آغازین باید همانند `encoding' خوانده شود، نه همانند `extreme'. . . .SH "نویسندگان (AUTHORS)" .PP David Necas (Yeti) .PP Michal Cihar .sp داده‌های Unicode از منابع برخط (آزاد) گوناگون یا با استفاده از GNU recode تولید شده‌اند. داده‌های آماری از متون مختلف در اینترنت به دست آمده است، امیدوارم شمارش نویسه‌ها کپی‌رایت کسی را نقض نکند. . . .SH "قدردانی‌ها (ACKNOWLEDGEMENTS)" .PP لطفاً فایل THANKS را در توزیع برنامه بررسی کنید. . . .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .PP Copyright (C) 2000-2003 David Necas (Yeti). .PP Copyright (C) 2009 Michal Cihar . .sp برنامه Enca یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط نسخه ۲ از مجوز عمومی همگانی گنو (GNU General Public License) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، بازتوزیع کرده و/یا تغییر دهید. .sp برنامه Enca با این امید که مفید باشد توزیع شده است، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید. .sp شما باید به همراه Enca یک نسخه از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت، به نشانی Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA نامه بنویسید. .