اینترنتسخت افزارسیستم عاملفونت

اسکی (ASCII) چیست؟

اسکی (ASCII) استانداردی برای نوشتن و نمایش دادن کاراکترهای انگلیسی به علاوه برخی از کاراکترهای رایج است. (+ جدول کامل اسکی و نحوه نوشن کاراکترهای اسکی)

کدگذاری نویسه چیست؟

قبل از آن که به سراغ بحث “اسکی (ASCII)” برویم، بهتر است با مفهوم کدگذاری نویسه یا Character Encoding آشنا شویم. کدگذاری نویسه که به آن کدبندی نویسه، رمزنگاری نویسه و رمزنگاری نوشته نیز گفته می‌شود، نوعی قرارداد برای درک نوشته در تبادل اطلاعات است. با استفاده از یک کدگذاری نویسه، طرفین مبادله کننده داده یا نوشته می‌توانند داده دریافتی خود را به صورت صحیح درک کنند. برای درک بهتر رمزنگاری نویسه، دو نفر را فرض کنید که به زبان‌های مختلف حرف می‌زنند. حال درصورتی که این دو فرد به یکدیگر برسند، هیچ یک از طرفین سخن دیگری را نخواهد فهمید. برای حل این مشکل می‌توان هر دو طرف را مجبور به یادگرفتن یک زبان واحد کرد. درحالی که هر دو می‌توانند به زبان خود حرف بزنند، این امکان نیز بوجود می‌آید یه با استفاده از آن زبان واحد با یکدیگر نیز صحبت کنند.

بگذارید یک مثال عملی برای لزوم وجود یک کدگذاری نوشته بزنیم؛ فرض کنید دو کامپیوتر X و Y قرار است اطلاعاتی را رد و بدل کنند درحالی که هیچ یک از آن‌ها از یک کدگذاری نویسه واحد پیروی نکنند درک اطلاعات در طرف دیگر غیرممکن خواهد بود. مثلاً در کامپیوتر X حرف A برابر با ۰۰۰۱ حرف B برابر با ۰۰۱۰ و حرف C برابر با ۰۱۰۰ باشد. در کامپیوتر Y نیز حرف A برابر ۱۱۱۱ حرف B برابر ۱۱۱۰ و حرف C برابر ۱۱۰۰ باشد. در این صورت عبارت CAB در دو کامپیوتر با استفاده از بیت‌های زیر شناخته خواهد شد:

X: ۰۱۰۰۰۰۰۱۰۰۱۰

Y: ۱۱۰۰۱۱۱۱۱۱۱۰

بنابراین امکان درک داده‌ها ارسالی از طرف کامپیوتر X به Y در کامپیوتر Y غیرقابل فهم خواهد بود و برعکس. اما درصورتی که این دو کامپیوتر از یک کدگذاری نویسه واحد استفاده کنند (حداقل در هنگام ارسال و دریافت داده‌ها)، این مشکل رفع خواهد شد. فرض کنید در کدگذاری نویسه واحد حرف A برابر ۰۰۰۱ حرف B برابر ۱۱۱۱ و حرف C برابر ۱۰۱۰ باشد در این حالت عبارت CAB در هر دوی این کامپیوترها به شکل زیر خواهد بود:

X: ۱۰۱۰۰۰۰۱۱۱۱۱

Y: ۱۰۱۰۰۰۰۱۱۱۱۱

بنابراین هردو طرف می‌توانند به صورت کاملاً صحیح اطلاعات دریافتی را درک کنند.

 

تاریخچه اسکی (ASCII)

به گفته سایت ویکی‌دات (WikiDot)؛ ایده طراحی کاراکتر اینکدینگ اسکی (ASCII) در ماه مه سال ۱۹۶۱ توسط Bob Bemer به ANSI (مخفف American National Standards Institute به معنای “موسسه استانداردهای ملی آمریکا) فرستاده شد و در همان سال کمیته‌ای با عنوان X3.4 (که زیرگروه X3 بوده) به رهبری John Auwaerter به نمایندگی اکثر سازندگان تشکیل شده و به کار کردن روی این ایده مشغول شدند. گروه X3.4 بیش از دو سال بر روی این ایده کار کردند که بیشتر این مدت طی بحث‌های بیهوده سپری شد و درنهایت در سال ۱۹۶۳ اسکی بوجود آمد.

در سال ۱۹۶۴ اولین سیستم عاملی که قرار بود توسط IBM با نام Operating System/360 از استاندارد ASCII استفاده کند به دلیل عدم تطابق کاراکتر ست ASCII با استاندارد پرینترها و دستگاه‌های پانچ (EBCDIC) کنسل شد. به خاطر مشکلات موجود، اسکی تا سال ۱۹۸۱ بدون استفاده ماند و طی این مدت تنها کامپیوتر UNIVAC 1050 محصول IBM بود که از استاندارد اسکی استفاده می‌کرد تا اینکه در سال ۱۹۸۱ نیاز به اسکی بیشتر شد و کامپیوترها تا جایی که می‌توانستند به این استاندارد مجهز شدند.

منبع تاریخچه اسکی: Wikidot.com

 

اسکی (ASCII) چیست؟

کلمه اسکی (ASCII) مخفف عبارت “American Standard Code for Information Interchange” به معنای “استاندارد کدگذاری آمریکایی برای تبادل اطلاعات” بوده و تلفظ آن /ˈæski/ است. اسکی یکی از کدبندی‌های نوشته (Character Encoding) است که به وسیله آن طرفین مبادله کننده اطلاعات می‌توانند به طور صحیح داده‌ها را دریافت و تشخیص بدهند. به عبارت بهتر؛ ASCII نوعی قرارداد برای تشخیص نوشته‌هاست.

کاراکتر ست اسکی خود به دو نوع تقسیم می‌شود. نوع ۷ بیتی که با نام اسکی استاندارد (Standard ASCII) شناخته شده و دارای ۲ به توان ۷ یعنی ۱۲۸ کاراکتر مختلف است که از ۰ تا ۱۲۷ استفاده می‌شوند.

نوع دیگر آن حالت ۸ بیتی است که با نام اسکی توسعه یافته (Extended ASCII) شناخته شده و دارای ۲ به توان ۸ یعنی ۲۵۶ کاراکتر مختلف است که از ۰ تا ۲۵۵ استفاده می‌شود. حالت توسعه یافته جدا از حالت استاندارد نیست بلکه از ۰ تا ۱۲۷ کاراکتر اول آن درست مانند حالت استاندارد بوده و فقط بقیه کاراکترها به بعد از آن (از ۱۲۸ تا ۲۵۵) اضافه شده است. کاراکترهای اضافی دارای هیچ استانداردی نبوده و ممکن است در دستگاه‌ها و کامپیوترهای مختلف فرق داشته باشد مثلاً در کامپیوتر X کاراکتر اسکی ۱۵۰ معادل حرف û و در کامپیوتر Y معادل حرف ب باشد اما کاراکترهای قبل از ۱۲۸ همگی ثابت هستند. برای مثال، کاراکترهای فارسی در اینکدینگ Iranian System شرکت ایرانیان سیستم که یکی از قدیمی ترین اینکدینگ‌های ASCII فارسی است را می‌توانید در این لینک ببینید.

در هر دو نوع ذکر شده (۷ و ۸ بیتی) تعداد ۳۲ کاراکتر اول (یعنی از ۰ تا ۳۱) و آخرین کاراکتر (۱۲۷) با عنوان کاراکترهای کنترلی (Control Characters) شناخته می‌شود. این کاراکترها غیرقابل چاپ بوده و فقط برای کنترل متن مورد استفاده قرار می‌گیرد (مثلاً مشخص کننده ابتدای هدر، حذف، کنسل و …). بقیه کاراکترها یعنی از ۳۲ تا ۱۲۶ قابل چاپ هستند. این کاراکترها شامل نمادها، حروف و اعداد انگلیسی هستند. در حالت توسعه یافته، از کاراکترهای ۱۲۸ تا ۲۵۵ نیز قابل چاپ هستند.

 

جدول کدهای اسکی

در جدول زیر می‌توانید کاراکترهای اسکی استاندارد (از ۰ تا ۱۲۷) را ببینید. همانطور که گفته شد به دلیل این که در اسکی توسعه یافته کاراکترهای اضافی اختیاری هستند، از نوشتن آن‌ها خودداری می‌کنیم. لیست‌ها از سایت ویکی‌پدیا کپی شده اند.

  • جدول کاراکترهای کنترلی

معادل باینری معادل اکتال معادل دسیمال معادل هگزادسیمال مخفف در یونیکد با کلید کنترل در زبان C نام کاراکتر کنترلی
۰۰۰ ۰۰۰۰ ۰۰۰ ۰ ۰۰ NUL ^@ کاراکتر Null یا پوچ
۰۰۰ ۰۰۰۱ ۰۰۱ ۱ ۰۱ SOH ^A کاراکتر آغازین هدر (Header)
۰۰۰ ۰۰۱۰ ۰۰۲ ۲ ۰۲ STX ^B کاراکتر آغازین متن و جداکننده هدر از متن
۰۰۰ ۰۰۱۱ ۰۰۳ ۳ ۰۳ ETX ^C کاراکتر پایانی متن
۰۰۰ ۰۱۰۰ ۰۰۴ ۴ ۰۴ EOT ^D سیگنال پایان انتقال – خاتمه دادن به ارتباط
۰۰۰ ۰۱۰۱ ۰۰۵ ۵ ۰۵ ENQ ^E سیگنال پرس و جو برای اتمام انتقال
۰۰۰ ۰۱۱۰ ۰۰۶ ۶ ۰۶ ACK ^F Acknowledge
۰۰۰ ۰۱۱۱ ۰۰۷ ۷ ۰۷ BEL ^G \a سیگنال بیپ (صدای کوتاه)
۰۰۰ ۱۰۰۰ ۰۱۰ ۸ ۰۸ BS ^H \b Backspace
۰۰۰ ۱۰۰۱ ۰۱۱ ۹ ۰۹ HT ^I \t تغییر مکان به کاراکتر تب (TAB) بعدی
۰۰۰ ۱۰۱۰ ۰۱۲ ۱۰ ۰A LF ^J \n تغییر مکان به خط جدید
۰۰۰ ۱۰۱۱ ۰۱۳ ۱۱ ۰B VT ^K \v تغییر مکان به کاراکتر تب خب بعدی
۰۰۰ ۱۱۰۰ ۰۱۴ ۱۲ ۰C FF ^L \f صفحه بعدی – کاراکتر فضای خالی
۰۰۰ ۱۱۰۱ ۰۱۵ ۱۳ ۰D CR ^M \r Carriage return
۰۰۰ ۱۱۱۰ ۰۱۶ ۱۴ ۰E SO ^N تغییر به کاراکتر ست دیگر
۰۰۰ ۱۱۱۱ ۰۱۷ ۱۵ ۰F SI ^O تغییر به کاراکتر ست اولیه
۰۰۱ ۰۰۰۰ ۰۲۰ ۱۶ ۱۰ DLE ^P Data Link Escape
۰۰۱ ۰۰۰۱ ۰۲۱ ۱۷ ۱۱ DC1 ^Q کنترل ۱ قراردادی دستگاه
۰۰۱ ۰۰۱۰ ۰۲۲ ۱۸ ۱۲ DC2 ^R کنترل ۲ قراردادی دستگاه
۰۰۱ ۰۰۱۱ ۰۲۳ ۱۹ ۱۳ DC3 ^S کنترل ۳ قراردادی دستگاه
۰۰۱ ۰۱۰۰ ۰۲۴ ۲۰ ۱۴ DC4 ^T کنترل ۴ قراردادی دستگاه
۰۰۱ ۰۱۰۱ ۰۲۵ ۲۱ ۱۵ NAK ^U Negative Acknowledgment
۰۰۱ ۰۱۱۰ ۰۲۶ ۲۲ ۱۶ SYN ^V Synchronous idle
۰۰۱ ۰۱۱۱ ۰۲۷ ۲۳ ۱۷ ETB ^W انتهای بلوک انتقال
۰۰۱ ۱۰۰۰ ۰۳۰ ۲۴ ۱۸ CAN ^X لغو
۰۰۱ ۱۰۰۱ ۰۳۱ ۲۵ ۱۹ EM ^Y تمام شدن منبع ذخیره یا کاغذ
۰۰۱ ۱۰۱۰ ۰۳۲ ۲۶ ۱A SUB ^Z Substitute
۰۰۱ ۱۰۱۱ ۰۳۳ ۲۷ ۱B ESC ^[ \e Escape
۰۰۱ ۱۱۰۰ ۰۳۴ ۲۸ ۱C FS ^\ جداکننده فایل
۰۰۱ ۱۱۰۱ ۰۳۵ ۲۹ ۱D GS ^] جداکننده گروه
۰۰۱ ۱۱۱۰ ۰۳۶ ۳۰ ۱E RS ^^
جداکننده رکورد
۰۰۱ ۱۱۱۱ ۰۳۷ ۳۱ ۱F US ^_ جداکننده واحد
کاراکترهای قابل چاپ از ۳۲ تا ۱۲۶
۱۱۱ ۱۱۱۱ ۱۷۷ ۱۲۷ ۷F DEL ^? Delete

 

  • جدول کاراکترهای قابل چاپ

معادل بایتری معادل اوکتال معادل دسیمال معادل هگزادسیمال کاراکتر
۰۱۰ ۰۰۰۰ ۰۴۰ ۳۲ ۲۰ (space)
۰۱۰ ۰۰۰۱ ۰۴۱ ۳۳ ۲۱ !
۰۱۰ ۰۰۱۰ ۰۴۲ ۳۴ ۲۲
۰۱۰ ۰۰۱۱ ۰۴۳ ۳۵ ۲۳ #
۰۱۰ ۰۱۰۰ ۰۴۴ ۳۶ ۲۴ $
۰۱۰ ۰۱۰۱ ۰۴۵ ۳۷ ۲۵ %
۰۱۰ ۰۱۱۰ ۰۴۶ ۳۸ ۲۶ &
۰۱۰ ۰۱۱۱ ۰۴۷ ۳۹ ۲۷
۰۱۰ ۱۰۰۰ ۰۵۰ ۴۰ ۲۸ (
۰۱۰ ۱۰۰۱ ۰۵۱ ۴۱ ۲۹ )
۰۱۰ ۱۰۱۰ ۰۵۲ ۴۲ ۲A *
۰۱۰ ۱۰۱۱ ۰۵۳ ۴۳ ۲B +
۰۱۰ ۱۱۰۰ ۰۵۴ ۴۴ ۲C ,
۰۱۰ ۱۱۰۱ ۰۵۵ ۴۵ ۲D
۰۱۰ ۱۱۱۰ ۰۵۶ ۴۶ ۲E .
۰۱۰ ۱۱۱۱ ۰۵۷ ۴۷ ۲F /
۰۱۱ ۰۰۰۰ ۰۶۰ ۴۸ ۳۰ ۰
۰۱۱ ۰۰۰۱ ۰۶۱ ۴۹ ۳۱ ۱
۰۱۱ ۰۰۱۰ ۰۶۲ ۵۰ ۳۲ ۲
۰۱۱ ۰۰۱۱ ۰۶۳ ۵۱ ۳۳ ۳
۰۱۱ ۰۱۰۰ ۰۶۴ ۵۲ ۳۴ ۴
۰۱۱ ۰۱۰۱ ۰۶۵ ۵۳ ۳۵ ۵
۰۱۱ ۰۱۱۰ ۰۶۶ ۵۴ ۳۶ ۶
۰۱۱ ۰۱۱۱ ۰۶۷ ۵۵ ۳۷ ۷
۰۱۱ ۱۰۰۰ ۰۷۰ ۵۶ ۳۸ ۸
۰۱۱ ۱۰۰۱ ۰۷۱ ۵۷ ۳۹ ۹
۰۱۱ ۱۰۱۰ ۰۷۲ ۵۸ ۳A :
۰۱۱ ۱۰۱۱ ۰۷۳ ۵۹ ۳B ;
۰۱۱ ۱۱۰۰ ۰۷۴ ۶۰ ۳C <
۰۱۱ ۱۱۰۱ ۰۷۵ ۶۱ ۳D =
۰۱۱ ۱۱۱۰ ۰۷۶ ۶۲ ۳E >
۰۱۱ ۱۱۱۱ ۰۷۷ ۶۳ ۳F ?
۱۰۰ ۰۰۰۰ ۱۰۰ ۶۴ ۴۰ @
۱۰۰ ۰۰۰۱ ۱۰۱ ۶۵ ۴۱ A
۱۰۰ ۰۰۱۰ ۱۰۲ ۶۶ ۴۲ B
۱۰۰ ۰۰۱۱ ۱۰۳ ۶۷ ۴۳ C
۱۰۰ ۰۱۰۰ ۱۰۴ ۶۸ ۴۴ D
۱۰۰ ۰۱۰۱ ۱۰۵ ۶۹ ۴۵ E
۱۰۰ ۰۱۱۰ ۱۰۶ ۷۰ ۴۶ F
۱۰۰ ۰۱۱۱ ۱۰۷ ۷۱ ۴۷ G
۱۰۰ ۱۰۰۰ ۱۱۰ ۷۲ ۴۸ H
۱۰۰ ۱۰۰۱ ۱۱۱ ۷۳ ۴۹ I
۱۰۰ ۱۰۱۰ ۱۱۲ ۷۴ ۴A J
۱۰۰ ۱۰۱۱ ۱۱۳ ۷۵ ۴B K
۱۰۰ ۱۱۰۰ ۱۱۴ ۷۶ ۴C L
۱۰۰ ۱۱۰۱ ۱۱۵ ۷۷ ۴D M
۱۰۰ ۱۱۱۰ ۱۱۶ ۷۸ ۴E N
۱۰۰ ۱۱۱۱ ۱۱۷ ۷۹ ۴F O
۱۰۱ ۰۰۰۰ ۱۲۰ ۸۰ ۵۰ P
۱۰۱ ۰۰۰۱ ۱۲۱ ۸۱ ۵۱ Q
۱۰۱ ۰۰۱۰ ۱۲۲ ۸۲ ۵۲ R
۱۰۱ ۰۰۱۱ ۱۲۳ ۸۳ ۵۳ S
۱۰۱ ۰۱۰۰ ۱۲۴ ۸۴ ۵۴ T
۱۰۱ ۰۱۰۱ ۱۲۵ ۸۵ ۵۵ U
۱۰۱ ۰۱۱۰ ۱۲۶ ۸۶ ۵۶ V
۱۰۱ ۰۱۱۱ ۱۲۷ ۸۷ ۵۷ W
۱۰۱ ۱۰۰۰ ۱۳۰ ۸۸ ۵۸ X
۱۰۱ ۱۰۰۱ ۱۳۱ ۸۹ ۵۹ Y
۱۰۱ ۱۰۱۰ ۱۳۲ ۹۰ ۵A Z
۱۰۱ ۱۰۱۱ ۱۳۳ ۹۱ ۵B [
۱۰۱ ۱۱۰۰ ۱۳۴ ۹۲ ۵C \
۱۰۱ ۱۱۰۱ ۱۳۵ ۹۳ ۵D ]
۱۰۱ ۱۱۱۰ ۱۳۶ ۹۴ ۵E ^
۱۰۱ ۱۱۱۱ ۱۳۷ ۹۵ ۵F _
۱۱۰ ۰۰۰۰ ۱۴۰ ۹۶ ۶۰ `
۱۱۰ ۰۰۰۱ ۱۴۱ ۹۷ ۶۱ a
۱۱۰ ۰۰۱۰ ۱۴۲ ۹۸ ۶۲ b
۱۱۰ ۰۰۱۱ ۱۴۳ ۹۹ ۶۳ c
۱۱۰ ۰۱۰۰ ۱۴۴ ۱۰۰ ۶۴ d
۱۱۰ ۰۱۰۱ ۱۴۵ ۱۰۱ ۶۵ e
۱۱۰ ۰۱۱۰ ۱۴۶ ۱۰۲ ۶۶ f
۱۱۰ ۰۱۱۱ ۱۴۷ ۱۰۳ ۶۷ g
۱۱۰ ۱۰۰۰ ۱۵۰ ۱۰۴ ۶۸ h
۱۱۰ ۱۰۰۱ ۱۵۱ ۱۰۵ ۶۹ i
۱۱۰ ۱۰۱۰ ۱۵۲ ۱۰۶ ۶A j
۱۱۰ ۱۰۱۱ ۱۵۳ ۱۰۷ ۶B k
۱۱۰ ۱۱۰۰ ۱۵۴ ۱۰۸ ۶C l
۱۱۰ ۱۱۰۱ ۱۵۵ ۱۰۹ ۶D m
۱۱۰ ۱۱۱۰ ۱۵۶ ۱۱۰ ۶E n
۱۱۰ ۱۱۱۱ ۱۵۷ ۱۱۱ ۶F o
۱۱۱ ۰۰۰۰ ۱۶۰ ۱۱۲ ۷۰ p
۱۱۱ ۰۰۰۱ ۱۶۱ ۱۱۳ ۷۱ q
۱۱۱ ۰۰۱۰ ۱۶۲ ۱۱۴ ۷۲ r
۱۱۱ ۰۰۱۱ ۱۶۳ ۱۱۵ ۷۳ s
۱۱۱ ۰۱۰۰ ۱۶۴ ۱۱۶ ۷۴ t
۱۱۱ ۰۱۰۱ ۱۶۵ ۱۱۷ ۷۵ u
۱۱۱ ۰۱۱۰ ۱۶۶ ۱۱۸ ۷۶ v
۱۱۱ ۰۱۱۱ ۱۶۷ ۱۱۹ ۷۷ w
۱۱۱ ۱۰۰۰ ۱۷۰ ۱۲۰ ۷۸ x
۱۱۱ ۱۰۰۱ ۱۷۱ ۱۲۱ ۷۹ y
۱۱۱ ۱۰۱۰ ۱۷۲ ۱۲۲ ۷A z
۱۱۱ ۱۰۱۱ ۱۷۳ ۱۲۳ ۷B {
۱۱۱ ۱۱۰۰ ۱۷۴ ۱۲۴ ۷C |
۱۱۱ ۱۱۰۱ ۱۷۵ ۱۲۵ ۷D }
۱۱۱ ۱۱۱۰ ۱۷۶ ۱۲۶ ۷E ~

 

نوشتن کاراکترهای اسکی

برای نوشتن کاراکترهای اسکی (ASCII) کافیست کلید Alt را نگه داشته سپس عدد دسیمال کاراکتر مورد نظر را از سمت راست کیبورد (نامبر پد) زده و کلید Alt را رها کنید. برای مثال، برای نوشتن کاراکتر R کلید Alt را نگه دارید، عدد ۸۲ را زده سپس کلید Alt را ها کنید.

امروزه کاراکترهای کنترلی اسکی به دلیل این که دیگر کاربردی در ارتباطات امروزی ندارند، تبدیل به اشکال و سمبل‌های مختلفی شده اند. مثلاً کد اسکی ۱ برابر نماد ☺ است.

جالب است بدانیداستفاده از کاراکترهای اسکی برای طراحی تصاویر نیز به یک هنر تبدیل شده است. برای مثال تصویر زیر که کوچک شده یک تصویر با ابعاد ۸۱۱۵x5515 است (تصویر کامل)، با استفاده از کاراکترهای ASCII طراحی شده است. البته ممکن است این تصاویر به صورت خودکار یا دستی تولید شده باشند:

Ascii art