جدول ASCII: چگونه ۱۲۸ عدد پایه متن شدند
ASCII، مخفف American Standard Code for Information Interchange، کدگذاریای است که به رایانهها آموخت روی معنای یک حرف توافق کنند. در ۱۹۶۳ منتشر شد و در طول دهه ۱۹۶۰ اصلاح گردید؛ هر کاراکتر اصلی متن انگلیسی، ارقام و چند سیگنال کنترلی را روی اعدادی که یک ماشین میتواند ذخیره و انتقال دهد نگاشت میکند. وقتی کلید حرف A بزرگ را فشار میدهید، رایانهتان یک شکل ذخیره نمیکند، عدد ۶۵ را ذخیره میکند. ASCII جدول جستجویی است که این عدد را در هر جایی که میرود به معنای A میرساند.
این استاندارد به طور مشهور فشرده است. ASCII یک کد ۷ بیتی است، یعنی هر کاراکتر در هفت رقم باینری جا میشود و کل مجموعه دقیقاً ۲ به توان ۷، یا ۱۲۸ نقطه کد متمایز از ۰ تا ۱۲۷ را در بر میگیرد. این صرفهجویی عمدی بود. تلهتایپها و مودمهای اولیه کند و گران بودند، پس هر بیت اهمیت داشت. هفت بیت برای پوشش حروف بزرگ و کوچک لاتین، ده رقم، علائم نگارشی رایج و کاراکترهای سیگنالدهی که دستگاهها را هماهنگ نگه میداشتند کافی بود، با یک بیت اضافه که بسیاری از سیستمها برای بررسی خطا استفاده میکردند.

دو نیمه: کاراکترهای کنترلی و کاراکترهای قابل چاپ
جدول به طور واضح به دو ناحیه تقسیم میشود. کدهای ۰ تا ۳۱، به علاوه کد ۱۲۷ (DEL)، کاراکترهای کنترلی هستند. اینها یک گلیف روی صفحه چاپ نمیکنند. در عوض به یک دستگاه دستور میدهند کاری انجام دهد: کد ۹ یک تب افقی است، کد ۱۰ خطتغذیه است که به خط جدید میرود، کد ۱۳ برگشت کالسکه است، و کد ۷ زنگی است که زمانی ترمینال را به صدا در میآورد. در مجموع ۳۳ کد سیگنالدهی وجود دارد، و هرچند بسیاری از آنها اکنون کنجکاویهای تاریخی هستند، خطتغذیه، برگشت کالسکه و تب همچنان برای نحوه قالببندی فایلهای متنی امروز ضروری هستند.
کدهای ۳۲ تا ۱۲۶ کاراکترهای قابل چاپ هستند، نود و پنج تا در کل. کد ۳۲ فاصله است که به عنوان قابل چاپ محسوب میشود چون مکاننما را پیش میبرد حتی اگر چیزی نشان ندهد. از آنجا به بعد علائم نگارشی و نمادها، ارقام ۰ تا ۹ در کدهای ۴۸ تا ۵۷، حروف بزرگ A تا Z در ۶۵ تا ۹۰، و حروف کوچک a تا z در ۹۷ تا ۱۲۲ میآیند. یک خاصیت مرتب از این چینش برمیخیزد: نسخههای کوچک و بزرگ یک حرف دقیقاً ۳۲ واحد با هم تفاوت دارند، به همین دلیل است که تغییر یک بیت حالت حرف را عوض میکند. این انتظامها تصادفی نیستند، طراحی شدهاند تا مرتبسازی و تبدیل حالت با حساب ساده انجام شود.
دهدهی، هگزادسیمال و باینری: سه دیدگاه از یک عدد
هر کد ASCII فقط یک عدد است، و آن را به سه شکل میبینید. دهدهی شکل پایه ۱۰ روزمره است، پس A عدد ۶۵ است. هگزادسیمال، پایه ۱۶، شکلی است که برنامهنویسان به آن دست مییابند چون با بایتها تراز میشود: A برابر 0x41 است، و محدوده قابل چاپ از 0x20 تا 0x7E اجرا میشود. باینری، پایه ۲، شکلی است که سختافزار در واقع ذخیره میکند، پس A عبارت است از 1000001 در هفت بیت خود. همان کاراکتر، سه نماد، و تسلط بر جابجایی بین آنها یک مهارت اصلی در خواندن دامپهای حافظه یا ترافیک شبکه است. اگر اغلب با این تبدیلها کار میکنید، مجموعه گستردهتر جداول مرجع در speedor.net نگاشتها را با یک کلیک در دسترس نگه میدارد.

کجا ASCII هنوز اهمیت دارد
اشتباه میشود که ASCII را در بایگانی تاریخ قرار دهید. در کار روزانه هر کسی که با کد سروکار دارد زنده است. زبانهای برنامهنویسی رشتههای متنی، فایلهای منبع و کلمات کلیدی پروتکل را در سطح بایت به صورت ASCII مدیریت میکنند. پروتکلهای شبکهای مانند هدرهای HTTP، SMTP، و بسیاری از فرمتهای پیکربندی در ASCII تعریف شدهاند تا برای انسان قابل خواندن باقی بمانند. وقتی یک رشته خراب به نظر میرسد، توسعهدهندگان به یک نمایشگر هگز دست میرسند و بایتهای خام را در مقابل جدول ASCII میخوانند تا یک کاراکتر کنترلی اشتباه یا پایان خط اشتباه پیدا کنند. کدگذاری URL، Base64، و توالیهای escape همه بر اساس مقادیر ASCII ساخته شدهاند. برای هر کسی که اشکالات کدگذاری را اشکالزدایی میکند، یک مرجع سریع در کنار ابزارهای توسعهدهنده یک بایت مرموز را به یک پاسخ واضح تبدیل میکند.
از ASCII به Unicode و UTF-8
ASCII انگلیسی را زیبا مدیریت کرد و تقریباً هیچ چیز دیگری نه. یک سقف ۱۲۸ کاراکتری نمیتواند حروف دارای تکیه، سیریلیک، چینی، عربی یا ایموجی را در خود جای دهد. یونیکد با اختصاص یک عدد منحصربهفرد، به نام نقطه کد، به هر کاراکتر در هر سیستم نوشتاری، اکنون بیش از یکصد هزار، پاسخ داد. به طور مهم، یونیکد یک کاتالوگ کاراکترها است، نه یک فرمت ذخیرهسازی، پس برای تبدیل این نقاط کد به بایتها به یک کدگذاری نیاز دارد.
UTF-8 آن کدگذاری است، و دلیلی است که ASCII واقعاً هرگز ناپدید نشد. UTF-8 از یک تا چهار بایت به ازای هر کاراکتر استفاده میکند، و طراحی شده تا نقاط کد ۰ تا ۱۲۷، کل محدوده ASCII، در یک بایت یکسان با ASCII ساده ذخیره شوند. این UTF-8 را کاملاً با عقب سازگار میکند: هر فایل معتبر ASCII قبلاً یک فایل UTF-8 معتبر است. کاراکترهای بالاتر از ۱۲۷ از بایتهای اضافی استفاده میکنند. این سازگاری ظریف یکی از دلایل بزرگی است که UTF-8 اکنون اکثریت قریب به اتفاق وب را تغذیه میکند. به طور خلاصه، ASCII هسته اصلی ۱۲۸ کاراکتری است، یونیکد کاتالوگ جهانی است که آن را در خود دارد، و UTF-8 کدگذاریای است که هر دو را حمل میکند در حالی که متن ASCII را بایت به بایت بدون تغییر نگه میدارد.
سوالات متداول
جدول ASCII چند کاراکتر دارد؟
ASCII استاندارد ۱۲۸ کاراکتر را از ۰ تا ۱۲۷ تعریف میکند. از این تعداد، ۹۵ کاراکتر قابل چاپ هستند شامل فاصله، و ۳۳ کاراکتر کنترلیاند که به جای چاپ یک گلیف، دستگاهها را سیگنال میدهند.
تفاوت بین کاراکترهای کنترلی و قابل چاپ چیست؟
کاراکترهای کنترلی، کدهای ۰ تا ۳۱ به علاوه ۱۲۷، به یک دستگاه دستور میدهند کاری مانند خطتغذیه یا تب انجام دهد و هیچ گلیف قابل مشاهدهای تولید نمیکنند. کاراکترهای قابل چاپ، کدهای ۳۲ تا ۱۲۶، حروف، ارقام، علائم نگارشی و فاصلهای هستند که واقعاً روی صفحه میبینید.
چرا ASCII یک کد ۷ بیتی است؟
هفت بیت دقیقاً ۱۲۸ ترکیب میدهند که برای پوشش حروف انگلیسی، ارقام، علائم نگارشی و سیگنالهای کنترلی در حالی که پهنای باند سختافزار اولیه کند را صرفهجویی میکرد کافی بود. هشتمین بیت در یک بایت اغلب برای بررسی خطای توازن رزرو میشد.
کد ASCII حرف A چیست؟
A بزرگ عدد دهدهی ۶۵، هگزادسیمال 0x41 و باینری 1000001 است. a کوچک عدد دهدهی ۹۷ است که دقیقاً ۳۲ بیشتر است، یک الگوی داخلی که تبدیل حالت را با حساب ساده ممکن میکند.
آیا ASCII همان یونیکد است؟
خیر. ASCII ۱۲۸ کاراکتر را پوشش میدهد، در حالی که یونیکد بیش از یکصد هزار کاراکتر در هر سیستم نوشتاری را فهرست میکند. ASCII در واقع ۱۲۸ نقطه کد اول یونیکد است، پس زیرمجموعه کوچکی از استاندارد بزرگتر است.
ارتباط UTF-8 با ASCII چگونه است؟
UTF-8 یک کدگذاری برای یونیکد است که نقاط کد ۰ تا ۱۲۷ را در یک بایت یکسان با ASCII ذخیره میکند. این هر فایل ASCII را به یک فایل UTF-8 معتبر تبدیل میکند، که دلیل سازگاری با عقب UTF-8 و تسلط آن بر وب مدرن است.
