اسکی (ASCII) چیست؟
اسکی (ASCII)، مخفف "American Standard Code for Information Interchange" است که به معنی "کد استاندارد آمریکایی برای تبادل اطلاعات" میباشد. تصور کنید وقتی یک رایانه متنی را ارسال یا دریافت میکند، باید روشی داشته باشد که هر کاراکتر را به کدی عددی تبدیل کند. اسکی این امکان را فراهم میکند و بهعنوان ابزاری بنیادی در توسعه اولیه ارتباطات دیجیتال استفاده شده است. این استاندارد یکی از اولین سیستمهای کدگذاری برای نمایش و تبادل اطلاعات متنی در رایانهها و دستگاههای دیجیتال است. هدف اصلی اسکی ارائه روشی استاندارد و قابل اعتماد برای نمایش متن و انتقال آن میان دستگاههای مختلف بود. این استاندارد به هر نویسه (کاراکتر) یک عدد منحصر به فرد اختصاص میدهد که امکان ذخیره، پردازش و انتقال متنها را بهصورت باینری فراهم میکند. به دلیل سادگی و گستردگی استفاده، اسکی پایهای برای بسیاری از استانداردهای مدرن کدگذاری متن، مانند یونیکد، به حساب میآید.
کدگذاری ASCII بر اساس کدگذاری کاراکترهایی است که برای دادههای تلگراف استفاده میشد. موسسه ملی استانداردهای آمریکا (ANSI) این کدگذاری را در سال 1963 به عنوان یک استاندارد برای رایانهها منتشر کرد.
نسخههای مختلف ASCII و یونیکد
هنگامی که ASCII برای اولین بار معرفی شد، تنها از متون به زبان انگلیسی پشتیبانی میکرد. زمانی که رایانههای 8 بیتی در دهه 1970 رایج شدند، فروشندگان و نهادهای استاندارد شروع به گسترش مجموعه کاراکترهای ASCII کردند تا 128 مقدار کاراکتر اضافی را شامل شوند. ASCII گسترش یافته کاراکترهای غیرانگلیسی را در بر میگیرد، اما هنوز برای کدگذاری جامع متون به زبانهای مختلف دنیا، از جمله زبان انگلیسی، کافی نیست. مجموعههای مختلف کاراکتر ASCII گسترش یافته بسته به فروشنده، زبان و کشور رایج هستند.
در ابتدا، استانداردهای کدگذاری کاراکتر دیگر برای زبانهای مختلف پذیرفته شدند. در برخی موارد، این استانداردها برای کشورهای دیگر با نیازهای متفاوت طراحی شده بودند. در سایر موارد، این کدگذاریها طراحیهای اختصاصی تولیدکنندگان سختافزار بودند.
یونیکد کدفضاهایی برای پیادهسازی کدگذاری کاراکتر برای زبانهای مختلف تعریف میکند. کاراکترها میتوانند با استفاده از یکی از دو روش زیر به کدگذاریها نگاشت شوند:
- UTF
- مجموعه کاراکتر کدگذاری جهانی (UCS)
بسته به زبان و نگاشت استفاده شده، کاراکترها میتوانند در یک تا چهار بایت 8 بیتی (UTF-8)، در دو واحد 16 بیتی (UTF-16) یا در یک واحد 32 بیتی (UTF-32) بیان شوند.
استاندارد UCS به عنوان یک استاندارد ISO (سازمان بینالمللی استانداردسازی)، ISO/IEC 10646 نگهداری میشود. تا زمان نگارش این متن، 143,859 کاراکتر مختلف در نسخه 13.0 از استاندارد یونیکد تعریف شده است.
کدگذاری نویسه چیست؟
کدگذاری نویسه یا Character Encoding فرآیندی است که در آن نویسهها (مانند حروف، اعداد و علائم) به قالبی عددی تبدیل میشوند. به عنوان مثال، در اسکی، حرف 'A' به عدد 65 و حرف 'a' به عدد 97 تبدیل میشود. این تبدیل، امکان ذخیره و پردازش متنها را برای رایانهها فراهم میکند. رایانهها دادهها را در قالب باینری (صفر و یک) پردازش میکنند و برای نمایش متون نیاز به روشی دارند که هر نویسه را به عددی خاص تبدیل کند. این کدگذاری به سیستمها اجازه میدهد تا متن را ذخیره کرده، انتقال دهند و نمایش دهند. کدگذاریهایی مانند اسکی، یونیکد (Unicode) و ایزو-8859، روشهای استانداردی هستند که به ایجاد همگامی میان سیستمهای مختلف کمک میکنند. در حالی که اسکی بر زبان انگلیسی تمرکز دارد، یونیکد به دلیل پشتیبانی از زبانهای مختلف جهانی گسترش یافته است.
کاراکترهای موجود در کدگذاری ASCII شامل حروف بزرگ و کوچک A تا Z، اعداد 0 تا 9 و علائم نگارشی پایه است. این کدگذاری همچنین شامل برخی کاراکترهای کنترلی غیرقابل چاپ است که در ابتدا برای استفاده در ترمینالهای چاپ تلهتایپ طراحی شده بودند.
کاراکترهای ASCII به روشهای زیر نمایش داده میشوند:
به صورت جفت ارقام هگزادسیمال (پایه 16) که شامل اعداد 0 تا 9 و حروف A تا F برای مقادیر اعشاری 10 تا 15 است؛
به صورت اعداد سهرقمی اکتال (پایه 8)؛
به صورت اعداد اعشاری از 0 تا 127؛ یا
به صورت اعداد دودویی 7 بیتی یا 8 بیتی.
اهمیت ASCII چیست؟
ASCII اولین استاندارد بزرگ کدگذاری کاراکتر برای پردازش دادهها بود. بیشتر سیستمهای کامپیوتری مدرن از یونیکد (Unicode) استفاده میکنند که به عنوان استاندارد جهانی کدگذاری کاراکتر نیز شناخته میشود. این استاندارد شامل کدگذاریهای ASCII نیز میشود.
کارگروه مهندسی اینترنت (IETF) در سال 1969 با انتشار سندی تحت عنوان "فرمت ASCII برای تبادل شبکهای" به شماره RFC 20، ASCII را به عنوان استانداردی برای دادههای اینترنتی پذیرفت. این سند استفاده از ASCII را برای دادههای اینترنتی استاندارد کرد و در سال 2015 بهعنوان یک استاندارد کامل به تصویب رسید.
اگرچه کدگذاری ASCII از نظر فنی منسوخ شده و جای خود را به یونیکد داده است، اما کاراکترهای ASCII همچنان از همان کدگذاری 128 کاراکتر نخست در فرمت Unicode Transformation Format 8 یا UTF-8 استفاده میکنند. به همین دلیل، متنهای ASCII با UTF-8 سازگار هستند.
در سال 2003، IETF استفاده از کدگذاری UTF-8 را برای تمام محتوای وب در سند RFC 3629 استاندارد کرد.
اکنون تقریباً تمام کامپیوترها از کدگذاری ASCII یا یونیکد استفاده میکنند. استثناهای این قاعده برخی از کامپیوترهای بزرگ IBM هستند که از کد اختصاصی 8 بیتی به نام EBCDIC (کد تبادل اعشاری دودویی گسترشیافته) استفاده میکنند.
ASCII چگونه کار میکند؟
ASCII یک مجموعه کاراکتر جهانی و قابلفهم برای ارتباطات دادهای پایه ارائه میدهد. این استاندارد به توسعهدهندگان امکان میدهد واسطهایی طراحی کنند که هم برای انسان و هم برای کامپیوتر قابلفهم باشند. ASCII دادهها را به صورت رشتهای از کاراکترهای ASCII کدگذاری میکند که هم بهعنوان متن ساده قابلخواندن برای انسان و هم بهعنوان داده برای کامپیوترها قابل تفسیر و نمایش است.
برنامهنویسان از طراحی مجموعه کاراکترهای ASCII برای سادهسازی برخی وظایف استفاده میکنند. به عنوان مثال، با استفاده از کدهای کاراکتر ASCII، تغییر یک بیت بهسادگی میتواند متن را از حروف بزرگ به حروف کوچک تبدیل کند.
حرف بزرگ "A" با مقدار دودویی زیر نمایش داده میشود:
0100 0001
حرف کوچک "a" با مقدار دودویی زیر نمایش داده میشود:
0110 0001
تفاوت در سومین بیت با ارزش از سمت چپ است. این تفاوت در سیستمهای دهدهی (decimal) و هگزادسیمال (hexadecimal) به صورت زیر مشخص میشود:
تفاوت بین حروف بزرگ و کوچک همیشه برابر با 32 (یا 0x20 در مبنای هگزادسیمال) است. بنابراین، تبدیل از حرف بزرگ به کوچک و بالعکس به سادگی با افزودن یا کم کردن عدد 32 از کد کاراکتر ASCII انجام میشود.
به طور مشابه، کاراکترهای هگزادسیمال برای ارقام 0 تا 9 به صورت زیر هستند:
با استفاده از این کدگذاری، توسعهدهندگان میتوانند به راحتی ارقام ASCII را به مقادیر عددی تبدیل کنند، به این صورت که چهار بیت با بیشترین اهمیت از مقادیر باینری ASCII (0011) را حذف کنند. این محاسبه همچنین میتواند با حذف اولین رقم هگزادسیمال یا با کسر 48 از کد دهمی ASCII انجام شود.
توسعهدهندگان همچنین میتوانند با بررسی بیت با بیشترین اهمیت از کاراکترها در یک دنباله، بررسی کنند که آیا یک جریان داده، رشته یا فایل حاوی مقادیر ASCII است یا خیر. بیت با بیشترین اهمیت کاراکترهای ASCII پایه همیشه 0 خواهد بود؛ اگر این بیت 1 باشد، آن کاراکتر یک کاراکتر کدگذاری شده با ASCII نیست.
ساختار و اجزای کدهای اسکی
1. کاراکترهای کنترلی (Control Characters)
کاراکترهای کنترلی کدهای 0 تا 31 و همچنین کد 127 را شامل میشوند. این کدها برای اعمال دستورات کنترلی مانند بازگشت به ابتدای خط، زنگ هشدار، انتقال متن و پایان فایل طراحی شدهاند. برای مثال، در گذشته چاپگرها از کاراکترهای کنترلی مانند "CR" (بازگشت به ابتدای خط) و "LF" (رفتن به خط بعدی) برای مدیریت موقعیت چاپ استفاده میکردند. همچنین در ترمینالها، کاراکترهایی مانند "BEL" برای ایجاد زنگ هشدار یا "ESC" برای ارسال دستورات خاص به دستگاه استفاده میشدند. این کاراکترها معمولاً در فرآیندهای درونی سیستم استفاده میشوند و بهطور مستقیم برای کاربران قابل مشاهده نیستند.
کد | نام | توضیح |
---|---|---|
0 | NULL | خاتمه مقدار |
7 | BEL | زنگ هشدار |
13 | CR | بازگشت به ابتدای خط |
27 | ESC | فرار (Escape) |
کاراکترهای کنترلی کدهای 0 تا 31 و همچنین کد 127 را شامل میشوند. این کدها برای اعمال دستورات کنترلی مانند بازگشت به ابتدای خط، زنگ هشدار، انتقال متن و پایان فایل طراحی شدهاند. این کاراکترها معمولاً در فرآیندهای درونی سیستم استفاده میشوند و بهطور مستقیم برای کاربران قابل مشاهده نیستند.
کد | نام | توضیح |
0 | NULL | خاتمه مقدار |
7 | BEL | زنگ هشدار |
13 | CR | بازگشت به ابتدای خط |
27 | ESC | فرار (Escape) |
2. کاراکترهای قابل چاپ (Printable Characters)
کاراکترهای قابل چاپ شامل کدهای 32 تا 126 هستند. این مجموعه شامل حروف الفبای انگلیسی (حروف بزرگ و کوچک)، اعداد، علائم نگارشی و نمادهای خاص است. این کاراکترها به طور گسترده در نمایش متون ساده و ایجاد طرحهای متنی استفاده میشوند.
کد | کاراکتر | توضیح |
32 | Space | فاصله |
33 | ! | علامت تعجب |
48 | 0 | عدد صفر |
65 | A | حرف A |
97 | a | حرف a |
جدول کدهای اسکی به تفکیک دستهبندی
حروف بزرگ (A-Z)
کد اسکی | حرف |
65 | A |
66 | B |
... | ... |
90 | Z |
حروف کوچک (a-z)
کد اسکی | حرف |
97 | a |
98 | b |
... | ... |
122 | z |
اعداد (0-9)
کد اسکی | رقم |
48 | 0 |
49 | 1 |
... | ... |
57 | 9 |
نوشتن کاراکترهای اسکی در زبانهای برنامهنویسی
کدهای اسکی در برنامهنویسی برای تبدیل عدد به کاراکتر یا برعکس استفاده میشوند. مثالهایی از زبانهای مختلف:
زبان #C
char character = (char)65; // خروجی: A
int asciiCode = (int)'A'; // خروجی: 65
زبان Python
character = chr(65) # خروجی: 'A'
asciiCode = ord('A') # خروجی: 65
تاریخچه اسکی (ASCII)
اسکی در سال 1963 توسط مؤسسه استانداردهای ملی آمریکا (ANSI) معرفی شد. در آن زمان، هدف از توسعه این استاندارد، ایجاد هماهنگی در تبادل اطلاعات متنی بین دستگاههای مختلف بود که هرکدام ممکن بود از کدگذاریهای متفاوتی استفاده کنند. توسعهدهندگان اسکی با کاهش پیچیدگی و ایجاد استانداردی یکنواخت، نقش مهمی در رشد صنعت رایانههای اولیه و دستگاههای جانبی ایفا کردند. برای مثال، اسکی به عنوان پایهای برای ارتباط میان رایانهها، چاپگرها و سایر ابزارهای دیجیتالی مورد استفاده قرار گرفت و راه را برای توسعه استانداردهای ارتباطی آینده هموار کرد. هدف این استاندارد، سادهسازی و استانداردسازی تبادل اطلاعات متنی میان دستگاههای مختلف بود. در آن زمان، عدم تطابق کدگذاری میان رایانهها و دستگاههای جانبی مختلف، مشکلات زیادی در تبادل داده ایجاد کرده بود. نسخه اولیه اسکی شامل 128 کد بود که از 0 تا 127 شمارهگذاری شده بودند. این مجموعه شامل کاراکترهای کنترلی و کاراکترهای قابل چاپ بود. در سال 1967، اسکی بهروزرسانی شد تا نیازهای بیشتری را پوشش دهد. بعدها نسخههای توسعه یافتهای مانند ASCII Extended ارائه شدند که کدهای بیشتری برای پشتیبانی از زبانهای دیگر و علائم خاص اضافه کردند. اسکی نقش مهمی در توسعه ارتباطات دیجیتال داشت و پایهای برای استانداردهای ارتباطی مانند ایمیل و اینترنت محسوب میشود.
هنر اسکی (ASCII Art)
هنر اسکی نوعی طراحی گرافیکی است که با استفاده از کاراکترهای اسکی انجام میشود. این هنر در گذشته به دلیل محدودیتهای گرافیکی رایانهها محبوب بود و هنوز هم بهعنوان یک شیوه خلاقانه طراحی استفاده میشود. طرحهای ساده تا پیچیده با ترکیب کاراکترهای متنی ایجاد میشوند و برای مقاصد تزئینی و تبلیغاتی استفاده میشوند.
ابزارهای معروف برای ایجاد هنر اسکی:
ASCII Art Studio: یک نرمافزار حرفهای برای ایجاد هنر اسکی.
JP2A: ابزار خط فرمان در لینوکس برای تبدیل تصاویر به هنر اسکی.
Picascii: وبسایتی برای تبدیل تصاویر به هنر اسکی.
Text Image: ابزار آنلاین ساده برای ساخت تصاویر اسکی.
FIGlet: ابزاری برای تولید متنهای گرافیکی با فونتهای خاص اسکی.
هنر اسکی نوعی طراحی گرافیکی است که با استفاده از کاراکترهای اسکی انجام میشود. این هنر در گذشته به دلیل محدودیتهای گرافیکی رایانهها محبوب بود و هنوز هم بهعنوان یک شیوه خلاقانه طراحی استفاده میشود. طرحهای ساده تا پیچیده با ترکیب کاراکترهای متنی ایجاد میشوند و برای مقاصد تزئینی و تبلیغاتی استفاده میشوند.
ابزارهای معروف برای ایجاد هنر اسکی:
ASCII Art Studio: یک نرمافزار حرفهای برای ایجاد هنر اسکی.
JP2A: ابزار خط فرمان در لینوکس برای تبدیل تصاویر به هنر اسکی.
Picascii: وبسایتی برای تبدیل تصاویر به هنر اسکی.
Text Image: ابزار آنلاین ساده برای ساخت تصاویر اسکی.
FIGlet: ابزاری برای تولید متنهای گرافیکی با فونتهای خاص اسکی.
کاربردهای اسکی
پردازش متن: برای ذخیره و نمایش متون ساده در فایلهای متنی و سیستمهای پردازشی.
ارتباطات شبکه: استفاده در پروتکلهای پایهای مانند HTTP، SMTP و FTP برای تبادل داده.
هنر دیجیتال: ایجاد طرحها و تصاویر با کاراکترهای متنی که در وبسایتها و نرمافزارها به کار میروند.
برنامهنویسی: تبدیل کاراکترها به اعداد برای پردازش داده و اعمال توابع خاص.
سیستمهای جاسازی شده: استفاده در دستگاههای کوچک که به کدگذاری سبک و ساده نیاز دارند.
تحلیل داده: برای مقایسه، مرتبسازی و فیلتر کردن دادهها بر اساس کدهای عددی نویسهها.
مزایا و معایب ASCII
پس از بیش از نیم قرن استفاده، مزایا و معایب استفاده از کدگذاری کاراکتر ASCII به خوبی شناخته شده است. این یکی از نقاط قوت بزرگ فرمت کدگذاری است.
مزایا
- مقبولیت جهانی: کدگذاری کاراکتر ASCII به طور جهانی درک میشود. به جز برای سیستمهای بزرگ IBM که از کدگذاری EBCDIC استفاده میکنند، این کدگذاری به طور جهانی در رایانهها از طریق استاندارد یونیکد پیادهسازی شده است. کدگذاری کاراکتر یونیکد جایگزین کدگذاری ASCII میشود، اما با ASCII سازگار با نسخههای قبلی است.
- کدگذاری کاراکتر فشرده: کدهای استاندارد میتوانند در 7 بیت بیان شوند. این به این معنی است که دادههایی که میتوانند در مجموعه کاراکتر استاندارد ASCII بیان شوند، تنها به تعداد بایتهای برابر با تعداد کاراکترهای داده برای ذخیره یا ارسال نیاز دارند.
- کارایی بالا برای برنامهنویسی: کدهای کاراکتر برای حروف و اعداد به خوبی با تکنیکهای برنامهنویسی برای دستکاری متن و استفاده از اعداد برای محاسبات یا ذخیرهسازی به عنوان داده خام سازگار هستند.
معایب
- مجموعه کاراکتر محدود: حتی با استفاده از ASCII گسترش یافته، تنها 255 کاراکتر مختلف میتوانند نمایان شوند. کاراکترهای موجود در مجموعه کاراکتر استاندارد برای ارتباطات به زبان انگلیسی کافی هستند. اما حتی با علائم تنوین و حروف یونانی پشتیبانی شده در ASCII گسترش یافته، برای زبانهایی که از الفبای لاتین استفاده نمیکنند، گنجاندن کاراکترها دشوار است.
- کدگذاری کاراکتر ناکارآمد: کدگذاری استاندارد ASCII برای زبان انگلیسی و دادههای عددی کارآمد است. نمایان کردن کاراکترها از دیگر الفباها به سربار بیشتری مانند کدهای فرار نیاز دارد.
اسکی یکی از ستونهای اصلی در علم رایانه است و همچنان در بسیاری از سیستمهای مدرن بهصورت مستقیم یا غیرمستقیم استفاده میشود. گسترش این استاندارد به سایر زبانها و نیازهای مدرن نشاندهنده اهمیت و تأثیر عمیق آن در دنیای فناوری است.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید