ASCII

از ویکیپدیا، دانشنامه آزاد
پرش به ناوبری پرش به جستجو

ASCII
کد USASCII chart.png
نمودار ASCII از کتابچه راهنمای چاپگر قبل از 1972
MIME / IANAus-ascii
نام مستعارISO-IR-006, [1] ANSI_X3.4-1968, ANSI_X3.4-1986, ISO_646.irv:1991, ISO646-US, us, IBM367, cp367 [2]
زبان ها)انگلیسی
طبقه بندیسری ISO 646
برنامه های افزودنی
قبل ازITA 2 ، FIELDATA
موفق شدISO 8859 ، یونیکد

ASCII ( / ˈ æ s k / ( گوش دادن ) نماد بلندگوی صوتی ASS -kee[3] : 6  مخفف شده از American Standard Code for Information Interchange ، یک استاندارد رمزگذاری کاراکتر برای ارتباطات الکترونیکی است. کدهای اسکی نشان دهنده متن در رایانه ها، تجهیزات مخابراتی و سایر دستگاه ها هستند. اکثر طرح‌های رمزگذاری کاراکتر مدرن مبتنی بر ASCII هستند، اگرچه از بسیاری از کاراکترهای اضافی پشتیبانی می‌کنند.

مرجع شماره های اختصاص داده شده اینترنت (IANA) نام US-ASCII را برای رمزگذاری این کاراکتر ترجیح می دهد. [2]

ASCII یکی از نقاط عطف IEEE است.

نمای کلی

ASCII از کد تلگراف توسعه یافته است . اولین استفاده تجاری از آن به عنوان یک کد تله چاپگر هفت بیتی بود که توسط سرویس های داده بل تبلیغ می شد. [ چه زمانی؟ ] کار بر روی استاندارد ASCII در ماه مه 1961، با اولین جلسه کمیته فرعی X3.2 انجمن استانداردهای آمریکا (ASA) (اکنون موسسه استانداردهای ملی آمریکا یا ANSI) آغاز شد. اولین ویرایش استاندارد در سال 1963 منتشر شد، [4] [5] در طول سال 1967 تحت یک بازنگری اساسی قرار گرفت، [6] [7] و آخرین به روز رسانی خود را در طول سال 1986 تجربه کرد. [8]در مقایسه با کدهای تلگراف قبلی، کد بل و ASCII پیشنهادی هر دو برای مرتب‌سازی راحت‌تر (یعنی حروف‌بندی) فهرست‌ها و ویژگی‌های اضافه شده برای دستگاه‌هایی غیر از تله‌پرینتر سفارش داده شدند. [ نیازمند منبع ]

استفاده از قالب ASCII برای تبادل شبکه در سال 1969 شرح داده شد. [9] این سند به طور رسمی در سال 2015 به استاندارد اینترنت ارتقا یافت. [10]

در اصل بر اساس الفبای انگلیسی ، ASCII 128 کاراکتر مشخص شده را در اعداد صحیح هفت بیتی رمزگذاری می کند، همانطور که در نمودار ASCII بالا نشان داده شده است. [11] نود و پنج کاراکتر رمزگذاری شده قابل چاپ هستند: این کاراکترها شامل ارقام 0 تا 9 ، حروف کوچک a تا z ، حروف بزرگ A تا Z و نمادهای نقطه‌گذاری هستند. علاوه بر این، مشخصات ASCII اصلی شامل 33 کد کنترل غیرچاپی بود که از ماشین‌های Teletype منشا گرفته بودند . اکثر اینها اکنون منسوخ شده اند، [12]اگرچه تعدادی از آنها هنوز معمولاً استفاده می شوند، مانند بازگرداندن کالسکه ، تغذیه خط ، و کدهای برگه .

به عنوان مثال، حروف کوچک i در رمزگذاری ASCII با باینری 1101001 = هگزادسیمال 69 ( i نهمین حرف است) = اعشاری 105 نشان داده می شود.

تاریخچه

اسکی (1963). تصاویر کنترل کنترل‌های معادل در جایی که وجود دارند نشان داده می‌شوند، یا در غیر این صورت یک نقطه خاکستری نشان داده می‌شوند.

کد استاندارد آمریکا برای تبادل اطلاعات (ASCII) تحت نظارت کمیته ای از انجمن استانداردهای آمریکا (ASA) به نام کمیته X3 توسط کمیته فرعی X3.2 (بعدها X3L2) و بعداً توسط کمیته فرعی X3 آن توسعه داده شد. گروه کاری 2.4 (اکنون INCITS ). ASA بعداً به مؤسسه استانداردهای ایالات متحده آمریکا (USASI) تبدیل شد، [3] : 211  و در نهایت به مؤسسه استانداردهای ملی آمریکا (ANSI) تبدیل شد.

با پر کردن سایر نویسه‌های ویژه و کدهای کنترلی، ASCII به‌عنوان ASA X3.4-1963 منتشر شد، [5] [13] 28 موقعیت کد بدون هیچ معنای اختصاص‌یافته، برای استانداردسازی آینده و یک کد کنترل اختصاص‌یافته باقی ماند. [3] : 66, 245  در آن زمان بحث هایی وجود داشت که آیا باید نویسه های کنترلی بیشتری به جای حروف کوچک وجود داشته باشد. [3] : 435  بلاتکلیفی زیاد طول نکشید: در ماه مه 1963، گروه کاری CCITT در الفبای تلگراف جدید پیشنهاد کرد که حروف کوچک را به چوب‌ها [a] [14] 6 و 7، [15] و سازمان بین‌المللی استاندارد اختصاص دهند.TC 97 SC 2 در ماه اکتبر رای داد تا این تغییر را در پیش نویس استاندارد خود بگنجاند. [16] گروه وظیفه X3.2.4 در جلسه مه 1963 به تصویب خود برای تغییر به ASCII رأی داد. [17] قرار دادن حروف کوچک در چوب‌ها [a] [14] 6 و 7 باعث شد که کاراکترها از نظر الگوی بیت از حروف بزرگ با یک بیت متفاوت باشند، که تطبیق کاراکترهای غیر حساس به حروف بزرگ و ساخت صفحه‌کلید و چاپگرها را ساده می‌کند.

کمیته X3 تغییرات دیگری، از جمله سایر کاراکترهای جدید (کاراکترهای پرانتز و نوار عمودی[18] تغییر نام برخی از کاراکترهای کنترلی (SOM تبدیل به شروع هدر (SOH) شد) و جابجایی یا حذف برخی دیگر (RU حذف شد) ایجاد کرد. [3] : 247-248  ASCII متعاقباً به عنوان USAS X3.4-1967، [6] [19] سپس USAS X3.4-1968، ANSI X3.4-1977، و در نهایت، ANSI X3.4-1986 به روز شد. [8] [20]

تجدید نظر در استاندارد ASCII:

در استاندارد X3.15، کمیته X3 همچنین به نحوه انتقال ASCII ( ابتدا کم اهمیت ترین بیت[3] : 249-253  [26] و نحوه ضبط آن بر روی نوار سوراخ شده پرداخت. آنها یک استاندارد 9 مسیری برای نوار مغناطیسی پیشنهاد کردند و سعی کردند با برخی از فرمت‌های کارت پانچ مقابله کنند.

ملاحظات طراحی

عرض بیت

کمیته فرعی X3.2 ASCII را بر اساس سیستم های کدگذاری تله چاپگر قبلی طراحی کرد. مانند دیگر رمزگذاری کاراکترها ، ASCII مطابقت بین الگوهای بیت دیجیتال و نمادهای کاراکتر (مانند نمودارها و کاراکترهای کنترل ) را مشخص می کند. این به دستگاه های دیجیتال اجازه می دهد تا با یکدیگر ارتباط برقرار کنند و اطلاعات شخصیت محور مانند زبان نوشتاری را پردازش، ذخیره و ارتباط برقرار کنند. قبل از توسعه ASCII، رمزگذاری های مورد استفاده شامل 26 کاراکتر حروف الفبا ، 10 رقم عددی و از 11 تا 25 نماد گرافیکی خاص بود. شامل همه اینها و کنترل کاراکترهای سازگار باComité Consultatif International Téléphonique et Télégraphique (CCITT) الفبای بین المللی تلگراف شماره 2 (ITA2) استاندارد 1924، [27] [28] FIELDATA (1956 [ نیاز به منبع ] )، و EBCDIC اولیه (1963)، بیش از 64 کد مورد نیاز بود. برای ASCII.

ITA2 به نوبه خود بر اساس کد تلگراف 5 بیتی بود که Émile Baudot در سال 1870 اختراع کرد و در سال 1874 به ثبت رساند. [28]

کمیته امکان یک تابع تغییر (مانند ITA2 ) را مورد بحث قرار داد که به بیش از 64 کد اجازه می دهد تا با یک کد شش بیتی نمایش داده شوند. در یک کد تغییر یافته، برخی از کدهای کاراکتر انتخاب بین گزینه های کدهای کاراکتر زیر را تعیین می کنند. این امکان رمزگذاری فشرده را فراهم می کند، اما برای انتقال داده کمتر قابل اعتماد است ، زیرا یک خطا در انتقال کد شیفت معمولاً بخش طولانی از انتقال را غیرقابل خواندن می کند. کمیته استانداردها تصمیم به تغییر نکردند، و بنابراین ASCII حداقل به یک کد هفت بیتی نیاز داشت. [3] : 215 §13.6، 236 §4 

کمیته یک کد هشت بیتی را در نظر گرفت، زیرا هشت بیت (هشت بیت ) به دو الگوی چهار بیتی اجازه می دهد تا به طور موثر دو رقم را با اعشار کدگذاری شده باینری رمزگذاری کنند . با این حال، تمام انتقال داده ها به ارسال هشت بیت نیاز دارد در حالی که هفت بیت می تواند کافی باشد. کمیته به استفاده از کد هفت بیتی برای به حداقل رساندن هزینه های مربوط به انتقال داده رای داد. از آنجایی که نوار سوراخ شده در آن زمان می‌توانست هشت بیت را در یک موقعیت ضبط کند، در صورت تمایل، یک بیت برابری را برای بررسی خطا در نظر می‌گرفت. [3] : 217 §c، 236 §5  ماشین های هشت بیتی (با هشت بیت به عنوان نوع داده بومی) که از بررسی برابری استفاده نمی کردند، معمولاً بیت هشتم را روی 0 تنظیم می کنند . [29]

سازمان داخلی

برای سهولت شناسایی، خود کد به گونه‌ای طراحی شده بود که اکثر کدهای کنترل با هم و همه کدهای گرافیکی با هم بودند. دو دسته اول به اصطلاح ASCII [a] [14] (32 موقعیت) برای کاراکترهای کنترل رزرو شده بودند. [3] : 220, 236 8, 9)  کاراکتر " space" باید قبل از گرافیک می آمد تا مرتب سازی آسان تر شود، بنابراین به موقعیت 20 hex تبدیل شد . [3] : 237 §10  به همین دلیل، بسیاری از علائم خاص که معمولاً به عنوان جداکننده استفاده می‌شوند قبل از ارقام قرار می‌گرفتند. کمیته تصمیم گرفت که حمایت از الفبای 64 حرفی مهم استو الگوی ASCII را انتخاب کرد تا بتوان آن را به راحتی به یک مجموعه کدهای گرافیکی 64 کاراکتری قابل استفاده تقلیل داد، [3] : 228، 237 §14  همانطور که در کد DEC SIXBIT (1963) انجام شد. بنابراین حروف کوچک با حروف بزرگ ترکیب نمی شدند. برای در دسترس نگه داشتن گزینه‌ها برای حروف کوچک و سایر گرافیک‌ها، کدهای خاص و عددی قبل از حروف مرتب شدند و حرف A در موقعیت 41 هگز قرار گرفت تا با پیش‌نویس استاندارد انگلیسی مربوطه مطابقت داشته باشد. [3] : 238 §18  ارقام 0-9 با 011 پیشوند هستند، اما 4 بیت باقیمانده با مقادیر مربوطه خود به صورت باینری مطابقت دارند و تبدیل را بااعشاری با کد باینری ساده است.

بسیاری از نویسه‌های غیرالفبایی به گونه‌ای قرار می‌گرفتند که با موقعیت تغییر یافته آنها در ماشین‌های تحریر مطابقت داشته باشد. یک نکته ظریف مهم این است که اینها بر اساس ماشین‌های تحریر مکانیکی بودند ، نه ماشین‌های تایپ الکتریکی . [30] ماشین‌های تحریر مکانیکی از استانداردی که توسط رمینگتون شماره 2 (1878) تنظیم شده بود، پیروی می‌کردند، اولین ماشین تحریر با کلید شیفت، و مقادیر جابجا شده 23456789-بود "#$%_&'() - ماشین‌های تایپ اولیه 0 و 1 را با استفاده از O (حرف بزرگ o ) حذف کردند. و l (حرف کوچک L ) به جای آن، اما 1!و0)جفت ها یک بار استاندارد شدند 0 و 1 رایج شد. بنابراین، در ASCII !"#$%در چوب دوم، [a] [14] موقعیت های 1-5، مربوط به ارقام 1-5 در چوب مجاور قرار داده شد. [a] [14] پرانتزها نمی توانند با 9 و 0 مطابقت داشته باشند، زیرا مکان مربوط به 0 توسط کاراکتر فاصله گرفته شده است. این امر با حذف _(زیر خط) از 6 و جابجایی نویسه‌های باقی‌مانده، که مطابق با بسیاری از ماشین‌های تحریر اروپایی بود که پرانتزها را با 8 و 9 قرار می‌دادند، انجام شد. این اختلاف در ماشین‌های تحریر به صفحه کلیدهای جفت بیتی منجر شدبه ویژه Teletype Model 33 که از چیدمان به چپ مطابق با ASCII متفاوت از ماشین‌های تحریر مکانیکی سنتی استفاده می‌کرد.

ماشین‌های تحریر برقی، به ویژه IBM Selectric (1961)، از چیدمان تا حدودی متفاوتی استفاده می‌کردند که عملاً در رایانه‌ها استاندارد شده است - به دنبال رایانه شخصی IBM (1981)، به ویژه مدل M (1984) - و بنابراین مقادیر نمادها را در صفحه‌کلیدهای مدرن تغییر می‌دهند. به اندازه صفحه کلیدهای قبلی با جدول ASCII مطابقت ندارد. این /?جفت همچنین به شماره 2 برمی‌گردد و ,< .>جفت‌ها در برخی از صفحه‌کلیدها استفاده می‌شدند (سایر صفحه‌کلیدها، از جمله شماره 2، جابجا نشدند ,(کاما) یا .(استاپ) بنابراین می‌توان آن‌ها را با حروف بزرگ بدون تغییر تغییر استفاده کرد). با این حال، ASCII ;:جفت را تقسیم کرد (تاریخ به شماره 2)، و نمادهای ریاضی (معمولاً قراردادهای متنوع -* =+) را به :* ;+ -=.

برخی از نویسه‌های معمولی ماشین تحریر در آن زمان گنجانده نشدند، به ویژه ½ ¼ ¢، در حالی که ^ ` ~ به عنوان نشانه برای استفاده بین‌المللی، و < >برای استفاده ریاضی، همراه با نویسه‌های خط ساده \ |(علاوه بر رایج /) گنجانده شدند. نماد @ در اروپای قاره‌ای استفاده نمی‌شد و کمیته انتظار داشت که با یک À تاکیدی در تغییر فرانسوی جایگزین شود، بنابراین @ در موقعیت 40 هگز ، درست قبل از حرف A قرار گرفت. [3] : 243 

کدهای کنترلی برای انتقال داده ها ضروری به نظر می رسید: شروع پیام (SOM)، پایان آدرس (EOA)، پایان پیام (EOM)، پایان ارسال (EOT)، "شما کی هستید؟" (WRU)، "شما؟" (RU)، کنترل دستگاه رزرو شده (DC0)، بیکار همزمان (SYNC) و تأیید (ACK). اینها برای به حداکثر رساندن فاصله هامینگ بین الگوهای بیتی خود قرار گرفتند. [3] : 243-245 

ترتیب کاراکترها

ترتیب کد ASCII را ترتیب ASCIIbetical نیز می گویند . [31] جمع‌آوری داده‌ها گاهی اوقات به‌جای ترتیب الفبایی «استاندارد» ( توالی تلفیقی ) به این ترتیب انجام می‌شود. انحرافات اصلی در ترتیب ASCII عبارتند از:

  • همه حروف بزرگ قبل از حروف کوچک آمده است. به عنوان مثال، "Z" قبل از "a" قرار می گیرد
  • ارقام و بسیاری از علائم نگارشی قبل از حروف قرار می گیرند

یک ترتیب میانی قبل از مقایسه مقادیر ASCII، حروف بزرگ را به حروف کوچک تبدیل می کند.

گروه های شخصیت

کنترل کاراکترها

ASCII 32 کد اول (اعداد 0-31 اعشاری) را برای کاراکترهای کنترلی ذخیره می کند : کدهایی که در اصل برای نمایش اطلاعات قابل چاپ نیستند، بلکه برای کنترل دستگاه هایی (مانند چاپگرها ) که از ASCII استفاده می کنند یا برای ارائه اطلاعات فرااطلاعاتی در مورد داده ها در نظر گرفته شده اند. جریان هایی مانند جریان هایی که روی نوار مغناطیسی ذخیره می شوند.

به عنوان مثال، کاراکتر 10 نشان دهنده عملکرد "خط تغذیه" است (که باعث می شود چاپگر کاغذ خود را به جلو ببرد)، و کاراکتر 8 نشان دهنده "backspace" است. RFC  2822 به نویسه‌های کنترلی اشاره می‌کند که شامل نویسه‌های کنترلی غیرفضای سفید نمی‌شوند . [32] به جز کاراکترهای کنترلی که قالب بندی خط محور اولیه را تجویز می کنند، ASCII هیچ مکانیزمی را برای توصیف ساختار یا ظاهر متن در یک سند تعریف نمی کند. طرح‌های دیگر، مانند زبان‌های نشانه‌گذاری ، صفحه آدرس و طرح‌بندی سند و قالب‌بندی.

استاندارد اصلی ASCII فقط از عبارات توصیفی کوتاه برای هر کاراکتر کنترل استفاده می کرد. ابهامی که این امر ایجاد می‌کرد گاهی عمدی بود، برای مثال زمانی که یک کاراکتر در پیوند ترمینال کمی متفاوت از جریان داده استفاده می‌شد ، و گاهی اوقات تصادفی بود، به عنوان مثال با معنی "حذف".

احتمالاً تأثیرگذارترین دستگاهی که بر تفسیر این شخصیت‌ها تأثیر می‌گذارد Teletype Model 33 ASR بود که یک پایانه چاپ با گزینه نوارخوان/پانچ کاغذ موجود بود. نوار کاغذی تا دهه 1980 یک وسیله بسیار محبوب برای ذخیره سازی برنامه های بلندمدت بود که هزینه کمتری داشت و از جهاتی شکننده تر از نوار مغناطیسی بود. به طور خاص، تخصیص ماشین Teletype مدل 33 ​​برای کدهای 17 (Control-Q، DC1، همچنین به عنوان XON)، 19 (Control-S، DC3، همچنین به عنوان XOFF شناخته می شود)، و 127 ( حذف ).) به استانداردهای واقعی تبدیل شد. مدل 33 ​​همچنین به دلیل دریافت توضیحات Control-G (کد 7، BEL، به معنای هشدار صوتی به اپراتور) به معنای واقعی کلمه قابل توجه بود، زیرا دستگاه حاوی یک زنگ واقعی بود که هنگام دریافت کاراکتر BEL به صدا درآمد. از آنجایی که صفحه کلید برای کلید O نیز نماد فلش چپ را نشان می‌دهد (از ASCII-1963، که این کاراکتر را به جای زیرخط داشت )، استفاده ناسازگار از کد 15 (Control-O، Shift In) به عنوان "حذف کاراکتر قبلی" تفسیر می‌شود. همچنین توسط بسیاری از سیستم های اشتراک زمانی اولیه پذیرفته شد اما در نهایت مورد غفلت قرار گرفت.

هنگامی که یک Teletype 33 ASR مجهز به نوارخوان خودکار کاغذ، Control-S (XOFF، مخفف transmit off) را دریافت کرد، باعث شد نوارخوان متوقف شود. دریافت Control-Q (XON، "انتقال روشن") باعث شد نوارخوان از سر گرفته شود. این به اصطلاح تکنیک کنترل جریان توسط چندین سیستم عامل کامپیوتر اولیه به عنوان سیگنال "دست دادن" به فرستنده هشدار می دهد که انتقال را به دلیل سرریز قریب الوقوع بافر متوقف کند، پذیرفته شد . تا به امروز در بسیاری از سیستم ها به عنوان یک تکنیک کنترل دستی خروجی وجود دارد. در برخی از سیستم ها، Control-S معنای خود را حفظ می کند، اما Control-Q با Control-S دوم جایگزین می شود تا خروجی را از سر بگیرد.

33 ASR همچنین می تواند به گونه ای پیکربندی شود که از Control-R (DC2) و Control-T (DC4) برای شروع و متوقف کردن پانچ نوار استفاده کند. در برخی از واحدهای مجهز به این عملکرد، حروف کاراکتر کنترلی مربوطه روی درپوش بالای حرف به ترتیب TAPE و TAPE بود. [33]

حذف در مقابل Backspace

Teletype نمی‌توانست سر تایپ خود را به سمت عقب حرکت دهد، بنابراین کلیدی روی صفحه کلید خود برای ارسال BS (backspace) نداشت. در عوض، یک کلید مشخص شده بود RUB OUTکه کد 127 (DEL) را ارسال می کرد. هدف از این کلید پاک کردن اشتباهات در یک نوار کاغذی با ورودی دستی بود: اپراتور باید دکمه ای را روی پانچ نوار فشار می داد تا پشتیبان گیری کند، سپس rubout را تایپ می کرد، که همه سوراخ ها را سوراخ می کرد و اشتباه را با یک کاراکتر جایگزین می کرد. قرار بود نادیده گرفته شود [34] تله تایپ‌ها معمولاً با رایانه‌های ارزان‌تر Digital Equipment Corporation استفاده می‌شدند . این سیستم ها باید از کلیدهای موجود استفاده می کردند و بنابراین کد DEL برای پاک کردن کاراکتر قبلی اختصاص داده شد. [35] [36]به همین دلیل، پایانه های ویدئویی DEC (به طور پیش فرض) کد DEL را برای کلید با علامت "Backspace" ارسال می کنند در حالی که کلید جداگانه با علامت "Delete" یک دنباله فرار ارسال می کند . بسیاری از پایانه های رقیب دیگر یک کد BS برای کلید Backspace ارسال کردند.

درایور ترمینال یونیکس فقط می‌توانست از یک کد برای پاک کردن کاراکتر قبلی استفاده کند، این می‌تواند روی BS یا DEL تنظیم شود، اما نه هر دو، که منجر به موقعیت‌های ابهام مکرر می‌شود که در آن کاربران باید بسته به ترمینال مورد استفاده خود تصمیم می‌گرفتند ( پوسته‌هایی که اجازه می‌دهد ویرایش خط، مانند ksh ، bash ، و zsh ، هر دو را درک می کند). این فرض که هیچ کلیدی یک کد BS ارسال نمی‌کند، اجازه می‌دهد از Control+H برای مقاصد دیگر، مانند دستور پیشوند "help" در گنو Emacs استفاده شود. [37]

فرار

به بسیاری از کدهای کنترلی معانی کاملاً متفاوت از کدهای اصلی آنها اختصاص داده شده است. به عنوان مثال، کاراکتر "Escape" (ESC، کد 27)، در ابتدا برای ارسال سایر کاراکترهای کنترلی به صورت تحت اللفظی به جای فراخوانی معنای آنها، به اصطلاح " توالی فرار " در نظر گرفته شده بود. این همان معنای «فرار» است که در رمزگذاری‌های URL، رشته‌های زبان C و سایر سیستم‌هایی که در آن نویسه‌های خاصی معنای محفوظ دارند، مشاهده می‌شود. با گذشت زمان این تفسیر مورد استفاده قرار گرفت و در نهایت تغییر کرد.

در استفاده مدرن، یک ESC ارسال شده به ترمینال معمولاً شروع یک توالی دستوری را نشان می دهد که معمولاً به شکل یک کد فرار ANSI (یا به طور صحیح تر، یک « معرفی توالی کنترل ») از ECMA-48 ( 1972) و جانشینان آن، که با ESC و با یک کاراکتر "[" (در براکت چپ) شروع می شود. در مقابل، یک ESC ارسال شده از ترمینال اغلب به عنوان یک کاراکتر خارج از باند استفاده می شود که برای خاتمه دادن به یک عملیات یا حالت خاص استفاده می شود، مانند ویرایشگرهای متن TECO و vi . در رابط کاربری گرافیکی (GUI) و پنجرهسیستم‌ها، ESC عموماً باعث می‌شود که یک برنامه کاربردی عملیات فعلی خود را متوقف کند یا به طور کلی از آن خارج شود.

انتهای خط

ابهام ذاتی بسیاری از کاراکترهای کنترلی، همراه با استفاده تاریخی از آنها، مشکلاتی را هنگام انتقال فایل های "متن ساده" بین سیستم ها ایجاد کرد. بهترین مثال برای این مشکل خط جدید در سیستم عامل های مختلف است . ماشین‌های تله تایپ نیاز داشتند که یک خط متن با هر دو "Carriage Return" (که هد چاپ را به ابتدای خط حرکت می‌دهد) و "Line Feed" (که کاغذ را یک خط بدون حرکت هد چاپ جلو می‌برد) خاتمه یابد. نام "بازگشت کالسکه" از این واقعیت گرفته شده است که در یک ماشین تحریر دستیکالسکه نگهدارنده کاغذ حرکت کرد در حالی که موقعیتی که میله های تایپ به روبان برخورد می کردند ثابت می ماند. کل کالسکه باید به سمت راست هل داده می شد (برگردانده می شد) تا حاشیه سمت چپ کاغذ برای خط بعدی قرار گیرد.

سیستم‌های عامل DEC ( OS/8 ، RT-11 ، RSX-11 ، RSTS ، TOPS-10 ، و غیره) از هر دو کاراکتر برای علامت‌گذاری انتهای یک خط استفاده می‌کردند تا دستگاه کنسول (در اصل دستگاه‌های Teletype ) کار کند. زمانی که اصطلاحاً «TTYهای شیشه‌ای» (که بعداً CRT یا «ترمینال‌های گنگ» نامیده می‌شوند) به وجود آمد، این کنوانسیون آنقدر به خوبی تثبیت شد که سازگاری با عقب‌نشینی مستلزم ادامه پیروی از آن بود. زمانی که گری کیلدال CP/M را ایجاد کرد، از برخی از قراردادهای رابط خط فرمان استفاده شده در سیستم عامل RT-11 DEC الهام گرفت .

تا قبل از معرفی PC DOS در سال 1981، IBM هیچ تأثیری در این مورد نداشت زیرا سیستم عامل های دهه 1970 آنها از رمزگذاری EBCDIC به جای ASCII استفاده می کردند و آنها به سمت ورودی کارت پانچ و خروجی چاپگر خطی گرایش داشتند که مفهوم "بازگشت حمل" بر آن بود. بی معنی. PC DOS آی‌بی‌ام (که توسط مایکروسافت به‌عنوان MS-DOS نیز عرضه می‌شود ) این قرارداد را به دلیل اینکه بر اساس CP/M آزادانه استوار بود، به ارث برد، [38] و ویندوز نیز به نوبه خود آن را از MS-DOS به ارث برد.

متأسفانه، نیاز به دو کاراکتر برای علامت گذاری انتهای یک خط، پیچیدگی و ابهام غیر ضروری را در نحوه تفسیر هر کاراکتر در صورت مواجه شدن با خود به وجود می آورد. برای ساده‌تر کردن مسائل، جریان‌های داده متن ساده ، از جمله فایل‌ها، در Multics [39] از فید خط (LF) به تنهایی به عنوان پایان‌دهنده خط استفاده کردند. سیستم های یونیکس و یونیکس مانند و سیستم های آمیگا این قرارداد را از Multics پذیرفته اند. از سوی دیگر، سیستم‌عامل مکینتاش ، Apple DOS و ProDOS اصلی به‌عنوان پایان‌دهنده خط، از CR استفاده می‌کردند. با این حال، از آنجایی که اپل اکنون این سیستم عامل های منسوخ را با macOS مبتنی بر یونیکس جایگزین کرده استسیستم عامل، آنها اکنون از تغذیه خط (LF) نیز استفاده می کنند. Radio Shack TRS-80 همچنین از یک CR تنها برای پایان دادن به خطوط استفاده کرد.

رایانه‌های متصل به ARPANET شامل ماشین‌هایی بودند که سیستم‌های عاملی مانند TOPS-10 و TENEX را با استفاده از انتهای خط CR-LF اجرا می‌کردند. ماشین هایی که سیستم عامل هایی مانند Multics را با استفاده از انتهای خط LF اجرا می کنند. و ماشین‌هایی که سیستم‌عامل‌هایی مانند OS/360 را اجرا می‌کنند که خطوط را به‌عنوان تعداد کاراکتر و سپس نویسه‌های خط نشان می‌دهند و به جای رمزگذاری ASCII از EBCDIC استفاده می‌کنند. پروتکل Telnet یک ترمینال مجازی شبکه ASCII را تعریف کرد" (NVT)، به طوری که اتصالات بین میزبان ها با قراردادهای پایان خط و مجموعه کاراکترهای مختلف می تواند با انتقال یک قالب متن استاندارد از طریق شبکه پشتیبانی شود. Telnet از ASCII به همراه انتهای خط CR-LF استفاده می کند و نرم افزار با استفاده از قراردادهای دیگر ترجمه می کند. بین قراردادهای محلی و NVT. [40] پروتکل انتقال فایل ، پروتکل Telnet، از جمله استفاده از ترمینال مجازی شبکه، را برای استفاده هنگام انتقال دستورات و انتقال داده در حالت پیش فرض ASCII اتخاذ کرد. [41] [42] این اضافه می کند پیچیدگی اجرای آن پروتکل‌ها و سایر پروتکل‌های شبکه، مانند پروتکل‌هایی که برای ایمیل و شبکه جهانی وب استفاده می‌شوند، در سیستم‌هایی که از قرارداد پایان خط CR-LF NVT استفاده نمی‌کنند. [43][44]

پایان فایل/جریان

نمایشگر PDP-6، [35] و جانشین آن PDP-10 TOPS-10، [36] از Control-Z (SUB) به عنوان نشانه پایان فایل برای ورودی از ترمینال استفاده کردند. برخی از سیستم‌عامل‌ها مانند CP/M طول فایل را تنها در واحدهای بلوک‌های دیسک ردیابی می‌کردند و از Control-Z برای علامت‌گذاری انتهای متن واقعی در فایل استفاده می‌کردند. [45] به این دلایل، EOF، یا انتهای فایل ، به صورت محاوره ای و متعارف به عنوان مخفف سه حرفی برای Control-Z به جای SUBstitute استفاده می شد. کد انتهای متن ( ETX ) که با نام Control-C نیز شناخته می شود، به دلایل مختلف نامناسب بود، در حالی که استفاده از Z به عنوان کد کنترل برای پایان دادن به یک فایل مشابه موقعیت آن در انتهای الفبا است و به عنوان یک کمک یادگاری بسیار راحت عمل می کند . یک قرارداد تاریخی رایج و هنوز رایج از قرارداد کد ETX برای قطع و توقف یک برنامه از طریق یک جریان داده ورودی، معمولاً از صفحه کلید استفاده می کند.

در قراردادهای کتابخانه C و یونیکس ، کاراکتر null برای پایان دادن به رشته های متنی استفاده می شود . چنین رشته هایی با پایان تهی را می توان به اختصار ASCIZ یا ASCIIZ نامید که در اینجا Z مخفف "صفر" است.

نمودار کد کنترل

دودویی اکتبر دسامبر هگز مخفف تصاویر کنترل یونیکد [b] نماد خیاطی [c] C دنباله های فرار [d] نام (1967)
1963 1965 1967
000 0000 000 0 00 خالی NUL ^@ \0 خالی
000 0001 001 1 01 SOM SOH ^ A شروع سرفصل
000 0010 002 2 02 EOA STX ^ B شروع متن
000 0011 003 3 03 EOM ETX ^ سی انتهای متن
000 0100 004 4 04 EOT ^D پایان انتقال
000 0101 005 5 05 WRU ENQ ^ E استعلام
000 0110 006 6 06 RU ACK ^F تصدیق
000 0111 007 7 07 BELL BEL ^ جی زنگ
000 1000 010 8 08 FE0 لیسانس ^ اچ \b پس زمینه [e] [f]
000 1001 011 9 09 HT/SK HT ^ من \ t برگه افقی [g]
000 1010 012 10 0A LF ^ جی \n تغذیه خط
000 1011 013 11 0B VTAB VT ^ ک \ v زبانه عمودی
000 1100 014 12 0C FF ^ L \f فید فرم
000 1101 015 13 0D CR ^ م \r کالسکه برگشت [h]
000 1110 016 14 0E بنابراین ^ N Shift Out
000 1111 017 15 0F SI ^O Shift In
001 0000 020 16 10 DC0 DLE ^ پ فرار لینک داده
001 0001 021 17 11 DC1 ^ س کنترل دستگاه 1 (اغلب XON )
001 0010 022 18 12 DC2 ^ R کنترل دستگاه 2
001 0011 023 19 13 DC3 ^S کنترل دستگاه 3 (اغلب XOFF )
001 0100 024 20 14 DC4 ^ تی کنترل دستگاه 4
001 0101 025 21 15 ERR NAK ^U تصدیق منفی
001 0110 026 22 16 همگام سازی SYN ^ V بیکار همزمان
001 0111 027 23 17 LEM ETB ^ W پایان بلوک انتقال
001 1000 030 24 18 S0 می توان ^ X لغو کنید
001 1001 031 25 19 S1 EM ^Y پایان متوسط
001 1010 032 26 1A S2 اس اس زیر ^ Z جایگزین
001 1011 033 27 1B S3 خروج ^[ \e [i] فرار [j]
001 1100 034 28 1C S4 FS ^\ جداکننده فایل
001 1101 035 29 1D S5 جی اس ^] جداکننده گروه
001 1110 036 30 1E S6 RS ^^ [k] جداکننده رکورد
001 1111 037 31 1F S7 ایالات متحده ^_ جداکننده واحد
111 1111 177 127 7F DEL حذف [l] [f]

سایر نمایش‌ها ممکن است توسط تجهیزات تخصصی استفاده شوند، برای مثال گرافیک ISO 2047 یا اعداد هگزادسیمال .

کاراکترهای قابل چاپ

کدهای 20 hex تا 7E hex ، که به عنوان کاراکترهای قابل چاپ شناخته می شوند، نشان دهنده حروف، اعداد، علائم نگارشی و چند علامت متفرقه هستند. در مجموع 95 کاراکتر قابل چاپ وجود دارد. [m]

کد 20 هگز ، کاراکتر "فضا" ، نشان دهنده فاصله بین کلمات است که توسط نوار فاصله صفحه کلید ایجاد می شود. از آنجایی که کاراکتر space یک گرافیک نامرئی (به جای یک کاراکتر کنترل) در نظر گرفته می شود [3] : 223  [46] به جای قسمت قبلی در جدول زیر فهرست شده است.

کد 7F هگز مربوط به کاراکتر کنترل غیر قابل چاپ "حذف" (DEL) است و بنابراین از این نمودار حذف شده است. در نمودار بخش قبل پوشش داده شده است. نسخه‌های قبلی ASCII از فلش رو به بالا به‌جای حفره (5E hex ) و از فلش چپ به جای زیرخط (5F hex ) استفاده می‌کردند. [5] [47]

دودویی اکتبر دسامبر هگز گلیف
1963 1965 1967
010 0000 040 32 20  فضا
010 0001 041 33 21 !
010 0010 042 34 22 "
010 0011 043 35 23 #
010 0100 044 36 24 $
010 0101 045 37 25 %
010 0110 046 38 26 &
010 0111 047 39 27 '
010 1000 050 40 28 (
010 1001 051 41 29 )
010 1010 052 42 2A *
010 1011 053 43 2B +
010 1100 054 44 2C ،
010 1101 055 45 2 بعدی -
010 1110 056 46 2E .
010 1111 057 47 2F /
011 0000 060 48 30 0
011 0001 061 49 31 1
011 0010 062 50 32 2
011 0011 063 51 33 3
011 0100 064 52 34 4
011 0101 065 53 35 5
011 0110 066 54 36 6
011 0111 067 55 37 7
011 1000 070 56 38 8
011 1001 071 57 39 9
011 1010 072 58 3A :
011 1011 073 59 3B ;
011 1100 074 60 3C <
011 1101 075 61 سه بعدی =
011 1110 076 62 3E >
011 1111 077 63 3F ?
100 0000 100 64 40 @ ` @
100 0001 101 65 41 آ
100 0010 102 66 42 ب
100 0011 103 67 43 سی
100 0100 104 68 44 دی
100 0101 105 69 45 E
100 0110 106 70 46 اف
100 0111 107 71 47 جی
100 1000 110 72 48 اچ
100 1001 111 73 49 من
100 1010 112 74 4A جی
100 1011 113 75 4B ک
100 1100 114 76 4C L
100 1101 115 77 4 بعدی م
100 1110 116 78 4E ن
100 1111 117 79 4F O
101 0000 120 80 50 پ
101 0001 121 81 51 س
101 0010 122 82 52 آر
101 0011 123 83 53 اس
101 0100 124 84 54 تی
101 0101 125 85 55 U
101 0110 126 86 56 V
101 0111 127 87 57 دبلیو
101 1000 130 88 58 ایکس
101 1001 131 89 59 Y
101 1010 132 90 5A ز
101 1011 133 91 5B [
101 1100 134 92 5C \ ~ \
101 1101 135 93 5 بعدی ]
101 1110 136 94 5E ^
101 1111 137 95 5F _
110 0000 140 96 60 @ `
110 0001 141 97 61 آ
110 0010 142 98 62 ب
110 0011 143 99 63 ج
110 0100 144 100 64 د
110 0101 145 101 65 ه
110 0110 146 102 66 f
110 0111 147 103 67 g
110 1000 150 104 68 ساعت
110 1001 151 105 69 من
110 1010 152 106 6A j
110 1011 153 107 6B ک
110 1100 154 108 6C ل
110 1101 155 109 6 بعدی متر
110 1110 156 110 6E n
110 1111 157 111 6F o
111 0000 160 112 70 پ
111 0001 161 113 71 q
111 0010 162 114 72 r
0011 111 163 115 73 س
111 0100 164 116 74 تی
111 0101 165 117 75 تو
111 0110 166 118 76 v
111 0111 167 119 77 w
111 1000 170 120 78 ایکس
111 1001 171 121 79 y
111 1010 172 122 7A z
111 1011 173 123 7B {
111 1100 174 124 7C ACK ¬ |
111 1101 175 125 7D }
111 1110 176 126 7E خروج | ~

مجموعه کاراکتر

ASCII (1977/1986)
0 1 2 3 4 5 6 7 8 9 آ ب سی دی E اف
0x NUL SOH STX ETX EOT ENQ ACK BEL  لیسانس   HT   LF   VT   FF   CR   بنابراین   SI 
1x DLE DC1 DC2 DC3 DC4 NAK SYN ETB می توان  EM  زیر خروج  FS   جی اس   RS   ایالات متحده 
2 برابر  SP  ! " # $ % & ' ( ) * + ، - . /
3 برابر 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 برابر @ آ ب سی دی E اف جی اچ من جی ک L م ن O
5 برابر پ س آر اس تی U V دبلیو ایکس Y ز [ \ ] ^ _
6 برابر ` آ ب ج د ه f g ساعت من j ک ل متر n o
7 برابر پ q r س تی تو v w ایکس y z { | } ~ DEL
  در نسخه 1963 تغییر یا اضافه شده است
  در نسخه 1963 و پیش نویس 1965 تغییر یافت

استفاده

ASCII برای اولین بار در سال 1963 به عنوان یک کد تله چاپگر هفت بیتی برای شبکه TWX (TeletypeWriter eXchange) American Telephone & Telegraph به صورت تجاری استفاده شد. TWX در ابتدا از ITA2 پنج بیتی قبلی استفاده می کرد که توسط سیستم تله چاپگر رقیب Telex نیز استفاده می شد . باب بمر ویژگی هایی مانند توالی فرار را معرفی کرد . [4] همکار بریتانیایی او هیو مک گرگور راس به محبوبیت این اثر کمک کرد - به گفته بمر، "بقدری که کدی که قرار بود به ASCII تبدیل شود، ابتدا در اروپا کد بمر-راس نامیده شد". [48] بمر به دلیل کار گسترده اش در مورد ASCII، "پدر ASCII" نامیده می شود.[49]

در 11 مارس 1968، رئیس جمهور ایالات متحده، Lyndon B. Johnson دستور داد که تمام رایانه های خریداری شده توسط دولت فدرال ایالات متحده از ASCII پشتیبانی کنند، و بیان کرد: [50] [51] [52]

من همچنین توصیه‌های وزیر بازرگانی [ لوتر اچ. هاجز ] را در مورد استانداردهای ثبت کد استاندارد برای تبادل اطلاعات روی نوارهای مغناطیسی و نوارهای کاغذی زمانی که در عملیات کامپیوتری استفاده می‌شوند، تأیید کرده‌ام. تمامی رایانه‌ها و پیکربندی‌های تجهیزات مربوطه که در فهرست موجودی دولت فدرال در تاریخ 1 ژوئیه 1969 و پس از آن وارد شده‌اند، باید قابلیت استفاده از کد استاندارد برای تبادل اطلاعات و فرمت‌های تعیین شده توسط استانداردهای نوار مغناطیسی و نوار کاغذی را در هنگام استفاده از این رسانه‌ها داشته باشند.

ASCII تا دسامبر 2007 رایج ترین رمزگذاری کاراکتر در شبکه جهانی وب بود، زمانی که رمزگذاری UTF-8 از آن پیشی گرفت. UTF-8 با ASCII سازگار است. [53] [54] [55]

انواع و مشتقات

با گسترش فناوری رایانه در سراسر جهان، سازمان‌ها و شرکت‌های مختلف استاندارد ، انواع مختلفی از ASCII را برای تسهیل بیان زبان‌های غیرانگلیسی که از الفبای رومی استفاده می‌کردند، توسعه دادند. می‌توان برخی از این تغییرات را به‌عنوان « افزونه‌های ASCII » طبقه‌بندی کرد، اگرچه برخی از آن عبارت برای نشان دادن همه انواع، از جمله آنهایی که نقشه کاراکتر ASCII را در محدوده 7 بیتی حفظ نمی‌کنند، سوء استفاده می‌کنند. علاوه بر این، پسوندهای ASCII نیز به اشتباه به عنوان ASCII نامگذاری شده اند.

کدهای 7 بیتی

از همان اوایل توسعه خود، [56] ASCII تنها یکی از چندین گونه ملی استاندارد کد کاراکتر بین‌المللی در نظر گرفته شد.

سایر نهادهای استاندارد بین‌المللی کدهای نویسه‌ای مانند ISO 646 (1967) را تأیید کرده‌اند که با ASCII یکسان یا تقریباً یکسان هستند، با پسوندهای نویسه‌های خارج از الفبای انگلیسی و نمادهای استفاده شده در خارج از ایالات متحده، مانند نماد پوند استرلینگ بریتانیا . (£)؛ به عنوان مثال با صفحه کد 1104 . تقریباً هر کشوری به یک نسخه اقتباس شده از ASCII نیاز داشت، زیرا ASCII تنها با نیازهای ایالات متحده و چند کشور دیگر مطابقت داشت. به عنوان مثال، کانادا نسخه مخصوص به خود را داشت که از کاراکترهای فرانسوی پشتیبانی می کرد.

بسیاری از کشورهای دیگر انواع ASCII را برای گنجاندن حروف غیرانگلیسی (به عنوان مثال é ، ñ ، ß ، Ł )، نمادهای ارز (مانند £ ، ¥ )، و غیره توسعه دادند. همچنین به YUSCII (یوگسلاوی) مراجعه کنید.

اکثر کاراکترهای مشترک را به اشتراک می‌گذارد، اما سایر نویسه‌های مفید محلی را به چندین نقطه کد رزرو شده برای «استفاده ملی» اختصاص می‌دهد. با این حال، چهار سالی که بین انتشار ASCII-1963 و اولین پذیرش ISO از یک توصیه بین‌المللی در طول سال 1967 سپری شد [57] باعث شد که انتخاب‌های ASCII برای نویسه‌های کاربرد ملی استانداردهای واقعی برای جهان به نظر برسد و باعث سردرگمی و ناسازگاری شود. زمانی که کشورهای دیگر شروع به تعیین تکالیف خود برای این نقاط کد کردند.

ISO/IEC 646 مانند ASCII یک مجموعه کاراکتر 7 بیتی است. هیچ کد اضافی را در دسترس قرار نمی دهد، بنابراین نقاط کد یکسان نویسه های مختلف را در کشورهای مختلف رمزگذاری می کند. کدهای فرار برای نشان دادن کدام نوع ملی برای یک قطعه متن تعریف شده بودند، اما به ندرت مورد استفاده قرار می گرفتند، بنابراین اغلب غیرممکن بود که بدانیم با کدام نوع کار کنیم و بنابراین، یک کد کدام کاراکتر را نشان می دهد، و به طور کلی، متن- به هر حال، سیستم‌های پردازشی می‌توانند تنها با یک نسخه کنار بیایند.

از آنجا که کاراکترهای براکت و پرانتز ASCII به نقاط کد "کاربرد ملی" اختصاص داده شده است که برای حروف تاکیدی در سایر انواع ملی ISO/IEC 646، یک برنامه نویس آلمانی، فرانسوی، یا سوئدی و غیره با استفاده از نوع ملی ISO آنها استفاده می شود. /IEC 646، به جای ASCII، مجبور بود چیزی بنویسد، و بنابراین، چیزی مانند

ä aÄiÜ = 'Ön'; ü

بجای

{ a[i] = '\n'; }

سه‌گراف‌های C برای حل این مشکل برای ANSI C ایجاد شدند ، اگرچه معرفی دیرهنگام و اجرای ناسازگار آنها در کامپایلرها استفاده از آنها را محدود کرد. بسیاری از برنامه نویسان رایانه های خود را روی US-ASCII نگه می داشتند، بنابراین متن ساده به زبان های سوئدی، آلمانی و غیره (مثلاً در ایمیل یا Usenet ) حاوی "{، }" و انواع مشابه در وسط کلمات بود، چیزی که برنامه نویسان دریافت کردند. استفاده می شود. به عنوان مثال، یک برنامه نویس سوئدی که از یک برنامه نویس دیگر ایمیل می زند و می پرسد آیا باید برای ناهار بروند، می تواند "N{jag har sm|rg}sar" را به عنوان پاسخ دریافت کند، که باید "Nä jag har smörgåsar" به معنای "نه من دریافت کردم" باشد. ساندویچ".

در ژاپن و کره، هنوز در دهه 2020، از یک نوع ASCII استفاده می شود که در آن اسلش معکوس (5C hex) به صورت ¥ (یک علامت ین ، در ژاپن) یا ₩ (یک علامت Won ، در کره) ارائه می شود. این بدان معنی است که برای مثال، مسیر فایل C:\Users\Smith به صورت C:¥Users¥Smith (در ژاپن) یا C:₩Users₩Smith (در کره) نشان داده می شود.

کدهای 8 بیتی

در نهایت، زمانی که کامپیوترهای 8، 16 و 32 بیتی (و بعداً 64 بیتی ) جایگزین کامپیوترهای 12 ، 18 و 36 بیتی شدند، استفاده از بایت های 8 بیتی رایج شد. هر کاراکتر را در حافظه ذخیره کنید و فرصتی را برای خویشاوندان 8 بیتی ASCII فراهم می کند. در بیشتر موارد، اینها به عنوان پسوندهای واقعی ASCII توسعه یافتند، و نگاشت کاراکتر اصلی را دست نخورده باقی گذاشتند، اما پس از 128 کاراکتر (یعنی 7 بیتی) اول، تعاریف کاراکترهای اضافی را اضافه کردند.

رمزگذاری ها عبارتند از ISCII (هند)، VISCII (ویتنام). اگرچه گاهی اوقات از این رمزگذاری ها به عنوان ASCII یاد می شود، ASCII واقعی فقط توسط استاندارد ANSI تعریف می شود.

بیشتر سیستم‌های رایانه‌ای خانگی اولیه مجموعه‌های کاراکترهای ۸ بیتی خود را که حاوی خط‌نگاری و حروف نگاره‌های بازی است، توسعه دادند و اغلب برخی یا همه کاراکترهای کنترلی را از ۰ تا ۳۱ با گرافیک بیشتر پر می‌کردند. کامپیوترهای Kaypro CP/M از 128 کاراکتر "بالا" برای الفبای یونانی استفاده می کردند.

کد PETSCII Commodore International که برای سیستم‌های 8 بیتی خود استفاده می‌کند احتمالاً در بین کدهای پس از سال 1970 منحصر به فرد است، زیرا بر اساس ASCII-1963 است، به جای رایج‌تر ASCII-1967، مانند آنچه در رایانه ZX Spectrum یافت می‌شود . رایانه های 8 بیتی آتاری و رایانه های Galaksija نیز از انواع ASCII استفاده می کردند.

IBM PC کد صفحه 437 را تعریف کرد که کاراکترهای کنترلی را با نمادهای گرافیکی مانند صورتک‌ها جایگزین کرد و کاراکترهای گرافیکی اضافی را در 128 موقعیت بالا ترسیم کرد. سیستم عامل هایی مانند DOS از این صفحات کد پشتیبانی می کردند و سازندگان رایانه های شخصی IBM از آنها در سخت افزار پشتیبانی می کردند. Digital Equipment Corporation مجموعه کاراکترهای چندملیتی (DEC-MCS) را برای استفاده در ترمینال محبوب VT220 به عنوان یکی از اولین افزونه‌هایی که بیشتر برای زبان‌های بین‌المللی طراحی شده است تا گرافیک بلوک، توسعه داد. مکینتاش Mac OS Roman را تعریف کردو پست اسکریپت نیز مجموعه ای را تعریف کردند، هر دوی آنها به جای گرافیک، بیشتر شبیه مجموعه کاراکترهای مدرن، حروف بین المللی و علائم نگارشی تایپوگرافیک را شامل می شدند.

استاندارد ISO/IEC 8859 (برگرفته از DEC-MCS) در نهایت استانداردی را ارائه کرد که اکثر سیستم ها آن را کپی کردند (حداقل به همان دقتی که ASCII کپی کردند، اما با بسیاری از جایگزین ها). افزونه محبوب دیگری که توسط مایکروسافت طراحی شده است، Windows-1252 (اغلب به اشتباه با عنوان ISO-8859-1 نامگذاری می شود )، علائم نگارشی نگارشی مورد نیاز برای چاپ متن سنتی را اضافه کرد. ISO-8859-1، Windows-1252، و ASCII 7 بیتی اصلی تا سال 2008 که UTF-8 رایج تر شد، رایج ترین رمزگذاری های کاراکتر بودند. [54]

ISO/IEC 4873 32 کد کنترل اضافی تعریف شده در محدوده هگزادسیمال 80-9F را به عنوان بخشی از گسترش رمزگذاری ASCII 7 بیتی برای تبدیل شدن به یک سیستم 8 بیتی معرفی کرد. [58]

یونیکد

یونیکد و مجموعه کاراکترهای جهانی ISO/IEC 10646 (UCS) دارای آرایه بسیار گسترده‌تری از کاراکترها هستند و اشکال رمزگذاری مختلف آنها به سرعت در بسیاری از محیط‌ها جایگزین ISO/IEC 8859 و ASCII شده‌اند. در حالی که ASCII محدود به 128 کاراکتر است، یونیکد و UCS با جدا کردن مفاهیم شناسایی منحصر به فرد (با استفاده از اعداد طبیعی به نام نقاط کد ) و رمزگذاری (به فرمت‌های باینری 8، 16 یا 32 بیتی به نام UTF- از کاراکترهای بیشتری پشتیبانی می‌کنند. 8 ، UTF-16 ، و UTF-32 ، به ترتیب).

ASCII در مجموعه کاراکترهای Unicode (1991) به عنوان اولین 128 نماد گنجانده شد، بنابراین کاراکترهای ASCII 7 بیتی دارای کدهای عددی یکسانی در هر دو مجموعه هستند. این اجازه می دهد تا UTF-8 با ASCII 7 بیتی سازگار باشد، زیرا یک فایل UTF-8 که فقط شامل کاراکترهای ASCII است با یک فایل ASCII که دارای دنباله ای از کاراکترها است یکسان است. مهمتر از همه، سازگاری فوروارد به عنوان نرم افزاری تضمین می شود که فقط کاراکترهای ASCII 7 بیتی را به عنوان خاص تشخیص می دهد و بایت های با بالاترین مجموعه بیت را تغییر نمی دهد (همانطور که اغلب برای پشتیبانی از پسوندهای ASCII 8 بیتی مانند ISO-8859-1 انجام می شود). داده های UTF-8 را بدون تغییر حفظ می کند. [59]

همچنین مشاهده کنید

یادداشت ها

  1. ^ a b c d e 128 کاراکتر از مجموعه کاراکترهای 7 بیتی ASCII به هشت گروه 16 کاراکتری به نام sticks 0-7 تقسیم می شوند که با سه بیت مهم مرتبط هستند. [14] بسته به نمایش افقی یا عمودی نقشه کاراکتر، چوب‌ها با ردیف‌ها یا ستون‌های جدول مطابقت دارند.
  2. ^ نویسه‌های یونیکد از ناحیه «کنترل تصاویر» U+2400 تا U+2421 برای نمایش نویسه‌های کنترل در مواقعی که چاپ یا نمایش آن‌ها به جای انجام عملکرد مورد نظرشان ضروری است، محفوظ است. برخی از مرورگرها ممکن است این موارد را به درستی نمایش ندهند.
  3. ^ نماد Caret اغلب برای نشان دادن کاراکترهای کنترل در ترمینال استفاده می شود. در اکثر پایانه های متنی، نگه داشتنکلید در حین تایپ کاراکتر دوم، کاراکتر کنترل را تایپ می کند. گاهی اوقات کلید shift مورد نیاز نیست، برای مثالممکن است فقط با Ctrl و 2 تایپ شود.Ctrl^@
  4. ^ دنباله های فرار از کاراکترها در زبان برنامه نویسی C و بسیاری از زبان های دیگر تحت تأثیر آن، مانند جاوا و پرل (البته همه پیاده سازی ها لزوماً از همه دنباله های فرار پشتیبانی نمی کنند).
  5. ^ کاراکتر Backspace را نیز می توان با فشار دادن کلید در برخی از سیستم ها واردکرد.← Backspace
  6. ^ a b ابهام Backspace به دلیل پایانه های اولیه طراحی شده با فرض استفاده اصلی از صفحه کلید پانچ دستی نوار کاغذی در حالی که به رایانه متصل نیست، است. برای حذف کاراکتر قبلی، باید از پانچ نوار کاغذی که به دلایل مکانیکی و سادگی یک دکمه روی پانچ بود و نه صفحه کلید، نسخه پشتیبان تهیه کرد، سپس کاراکتر rubout را تایپ کرد. بنابراین آنها یک کلید تولید کننده کلید را در محل مورد استفاده در ماشین‌های تحریر برای پس‌اسپیس قرار دادند. هنگامی که سیستم‌ها از این پایانه‌ها استفاده می‌کردند و ویرایش خط فرمان را ارائه می‌کردند، مجبور بودند از کد "rubout" برای اجرای یک backspace استفاده کنند و اغلب کاراکتر backspace را تفسیر نمی‌کردند (ممکن است " ^H " را تکرار کنند."برای بک اسپیس). پایانه های دیگر که برای نوار کاغذی طراحی نشده بودند، کلید را در این مکان ساختند Backspace، و سیستم های طراحی شده برای آن ها از آن کاراکتر برای پشتیبان گیری استفاده می کردند. از آنجایی که کد حذف اغلب یک افکت بک اسپیس ایجاد می کرد، این امر همچنین سازندگان ترمینال را مجبور به ساخت هر کلید چیزی غیر از کاراکتر Delete تولید می کند.Delete
  7. ^ کاراکتر Tab را نیز می توان با فشار دادن کلید در اکثر سیستم ها واردکرد.Tab ↹
  8. ^ کاراکتر Carriage Return را نیز می توان با فشار دادنکلیدیادر اکثر سیستم ها وارد کرد.↵ EnterReturn
  9. ^ دنباله escape بخشی از ISO C و بسیاری از مشخصات زبان دیگر نیست. با این حال، توسط چندین کامپایلر، از جمله GCC ، قابل درک است .
  10. ^ کاراکتر Escape را نیز می توان با فشار دادن کلید در برخی از سیستم ها واردکرد.Esc
  11. ^ ^^ به معنای+(فشردن کلیدهای "Ctrl" و caret ).Ctrl^
  12. ^ گاهی اوقات می توان با فشار دادنکلید در برخی از سیستم ها،کاراکتر Delete را وارد کرد.← Backspace
  13. ^ چاپ شده، شخصیت ها عبارتند از:
     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

منابع

  1. ANSI (01-12-1975). ISO-IR-006: مجموعه کاراکترهای گرافیکی ASCII (PDF) . ITSCJ/ IPSJ .
  2. ^ a b "مجموعه کاراکترها" . مرجع شماره های اختصاص داده شده اینترنتی (IANA) . 14/05/2007 . بازیابی شده در 2019-08-25 .
  3. ^ a b c d e f g h i j k l m n o p q r s Mackenzie, Charles E. (1980). مجموعه کاراکترهای کدگذاری شده، تاریخچه و توسعه (PDF) . سری برنامه نویسی سیستم ها (ویرایش 1). Addison-Wesley Publishing Company, Inc. pp. 6, 66, 211, 215, 217, 220, 223, 228, 236-238, 243-245, 247-253, 423, 425-217, 220, 223, 228, 236-238, 243-245, 247-253, 423, 425-454, 425-424. شابک  978-0-201-14460-4. LCCN  77-90165 . بایگانی شده (PDF) از نسخه اصلی در 26 مه 2016 . بازبینی شده در 25 اوت 2019 .
  4. ^ a b Brandel, Mary (06-07-1999). "1963: اولین ASCII" . سی ان ان . بایگانی شده از نسخه اصلی در 2013-06-17 . بازیابی شده در 2008-04-14 .
  5. ^ a b c d "کد استاندارد آمریکایی برای تبادل اطلاعات، ASA X3.4-1963" . انجمن استاندارد آمریکا (ASA). 1963-06-17 . بازیابی شده در 06-06-2020 .
  6. ^ a b c "کد استاندارد ایالات متحده برای تبادل اطلاعات، USAS X3.4-1967". موسسه استاندارد ایالات متحده آمریکا (USASI). 07-07-1967. {{cite journal}}:استناد به مجله نیاز دارد |journal=( کمک )
  7. جنینگز، توماس دانیل (۲۰۱۶-۰۴-۲۰) [۱۹۹۹]. "تاریخچه مشروح برخی از کدهای کاراکتر یا ASCII: کد استاندارد آمریکایی برای نفوذ اطلاعات" . تحقیقات حساس (SR-IX) . بازیابی شده در 08-03-2020 .
  8. ^ a b c "استاندارد ملی آمریکا برای سیستم های اطلاعاتی - مجموعه کاراکترهای کدگذاری شده - کد استاندارد ملی آمریکا 7 بیتی برای تبادل اطلاعات (7 بیتی ASCII)، ANSI X3.4-1986". موسسه استاندارد ملی آمریکا (ANSI). 26/03/1986. {{cite journal}}: Cite journal requires |journal= (help)
  9. وینت سرف (1969-10-16). فرمت اسکی برای تبادل شبکه IETF _ doi : 10.17487/RFC0020 . RFC 20 .
  10. بری لیبا (12-01-2015). "طبقه بندی صحیح RFC 20 (فرمت ASCII) به استاندارد اینترنت" . IETF _
  11. Shirley, R. (August 2007), Internet Security Glossary, Version 2 , RFC 4949 , بایگانی شده از نسخه اصلی در 2016-06-13 , بازیابی شده 2016-06-13 
  12. ماینی، آنیل کومار (2007). الکترونیک دیجیتال: اصول، دستگاه ها و کاربردها . جان وایلی و پسران پ. 28. شابک 978-0-470-03214-5. علاوه بر این، کدهایی را برای 33 کاراکتر کنترلی غیرچاپی، عمدتاً منسوخ تعریف می کند که بر نحوه پردازش متن تأثیر می گذارد.
  13. بوکستاین، اد (ژوئیه 1964). "کدهای کامپیوتری باینری و ASCII" . دنیای الکترونیک 72 (1): 28-29. بایگانی شده از نسخه اصلی در 2016-03-03 . بازیابی شده در 2016-05-22 .
  14. ^ a b c d e f Bemer, Robert William (1980). "فصل 1: داخل ASCII" (PDF) . نرم افزار همه منظوره بهترین عصر رابط. جلد 2. Portland, OR, USA: dilithium Press. صص 1-50. شابک  978-0-918398-37-6. LCCN  79-67462 . بایگانی شده از نسخه اصلی در 2016-08-27 . بازیابی شده در 2016-08-27از جانب:
  15. گزارش مختصر: جلسه کارگروه CCITT در مورد الفبای جدید تلگراف، 13 تا 15 مه، 1963.
  16. ^ گزارش ISO/TC/97/SC 2 - جلسه 29 تا 31 اکتبر 1963.
  17. گزارش در مورد گروه وظیفه X3.2.4، 11 ژوئن 1963، ساختمان پنتاگون، واشنگتن، دی سی.
  18. گزارش جلسه شماره 8، گروه وظیفه X3.2.4، 17 و 18 دسامبر 1963
  19. ^ a b c Winter, Dik T. (2010) [2003]. "استانداردهای ایالات متحده و بین المللی: ASCII" . بایگانی شده از نسخه اصلی در 2010-01-16.
  20. ^ a b c d e f g Salste, Tuomas (ژانویه 2016). "مجموعه کاراکترهای 7 بیتی: تجدید نظرهای ASCII" . آیووست اوی. urn:nbn:fi-fe201201011004 . بایگانی شده از نسخه اصلی در 2016-06-13 . بازیابی 2016-06-13 .
  21. «اطلاعات». علمی آمریکایی (نسخه ویژه). 215 (3). سپتامبر 1966. JSTOR e24931041 . 
  22. Korpela، Jukka K. (14-03-2014) [07-06-2006]. Unicode Explained – بین المللی کردن اسناد، برنامه ها و وب سایت ها (نسخه دوم ویرایش اول). O'Reilly Media, Inc. p. 118. شابک 978-0-596-10121-3.
  23. ANSI INCITS 4-1986 (R2007): استاندارد ملی آمریکا برای سیستم های اطلاعاتی – مجموعه کاراکترهای کدگذاری شده – کد استاندارد ملی آمریکا 7 بیتی برای تبادل اطلاعات (7 بیتی ASCII) (PDF) ، 2007 [1986]، بایگانی شده (PDF) از نسخه اصلی در 2014-02-07 ، بازیابی شده در 2016-06-12
  24. «INCITS 4-1986[R2012]: سیستم‌های اطلاعاتی - مجموعه نویسه‌های کدگذاری‌شده - کد استاندارد ملی آمریکا برای تبادل اطلاعات 7 بیتی (7 بیتی ASCII)» . 15/06/2012. بایگانی شده از نسخه اصلی در 2020-02-28 . بازیابی شده در 2020-02-28 .
  25. «INCITS 4-1986[R2017]: سیستم‌های اطلاعاتی - مجموعه نویسه‌های کدگذاری‌شده - کد استاندارد ملی آمریکا برای تبادل اطلاعات 7 بیتی (7 بیتی ASCII)» . 2017-11-02 [2017-06-09]. بایگانی شده از نسخه اصلی در 2020-02-28 . بازیابی شده در 2020-02-28 .
  26. ^ توالی بیت کد استاندارد ملی آمریکا برای تبادل اطلاعات در انتقال داده های سریال به بیت ، موسسه استانداردهای ملی آمریکا (ANSI)، 1966، X3.15-1966
  27. «BruXy: ارتباطات از راه دور رادیویی» . 2005-10-10. بایگانی شده از نسخه اصلی در 2016-04-12 . بازیابی 2016-05-09 . کد ارسالی از الفبای بین المللی تلگراف شماره 2 (ITA-2) استفاده می کند که توسط CCITT در سال 1924 معرفی شد.
  28. ^ a b اسمیت، گیل (2001). "کدهای ارتباطی از راه دور" (PDF) . Baudot.net. بایگانی شده (PDF) از نسخه اصلی در 2008-08-20 . بازیابی شده در 2008-07-11 .
  29. ^ ساویر، استنلی ای. کرانتز، استیون جورج (1995). پرایمر TeX برای دانشمندان . CRC Press, LLC . پ. 13. Bibcode : 1995tps..book.....S . شابک 978-0-8493-7159-2. بایگانی شده از نسخه اصلی در 2016-12-22 . بازیابی شده در 2016-10-29 .
  30. ساوارد، جان جی جی "صفحه کلیدهای کامپیوتر" . بایگانی شده از نسخه اصلی در 2014-09-24 . بازیابی شده در 2014-08-24 .
  31. ^ "تعریف ASCIIبتیک" . مجله پی سی . بایگانی شده از نسخه اصلی در 09/03/2013 . بازیابی شده در 2008-04-14 .
  32. Resnick, P. (آوریل 2001)، قالب پیام اینترنتی ، RFC 2822 ، بایگانی شده از نسخه اصلی در 2016-06-13 ، بازیابی شده در 2016-06-13 (نکته. NO-WS-CTL.)
  33. ^ مک کانل، رابرت؛ هاینز، جیمز؛ وارن، ریچارد. "درک کدهای اسکی" . بایگانی شده از نسخه اصلی در 2014-02-27 . بازیابی شده در 2014-05-11 .
  34. بری مارگولین (29/05/2014). "Re: ویرایشگر و تاریخچه پردازشگر کلمه (بود: Re: RTF برای emacs)" . help-gnu-emacs (لیست پستی). بایگانی شده از نسخه اصلی در 2014-07-14 . بازیابی شده در 11-07-2014 .
  35. ^ a b "PDP-6 Multiprogramming System Manual System" (PDF) . شرکت تجهیزات دیجیتال (DEC). 1965. ص. 43. بایگانی شده (PDF) از نسخه اصلی در 2014-07-14 . بازیابی شده در 10-07-2014 .
  36. ^ a b "راهنمای مرجع PDP-10، کتاب 3، ارتباط با مانیتور" (PDF) . شرکت تجهیزات دیجیتال (DEC). 1969. ص. 5-5. بایگانی شده (PDF) از نسخه اصلی در 2011-11-15 . بازیابی شده در 10-07-2014 .
  37. «Help - GNU Emacs Manual» . بایگانی شده از نسخه اصلی در 2018-07-11 . بازیابی شده در 2018-07-11 .
  38. تیم پترسون (2007-08-08). "آیا DOS یک Rip-Off CP/M است؟" . DosMan Drivel . بایگانی شده از نسخه اصلی در 2018-04-20 . بازیابی شده در 2018-04-19 .
  39. ^ اوسانا ، ج.اف. Saltzer, JH (17-19 نوامبر 1970). "مشکلات فنی و مهندسی انسانی در اتصال پایانه ها به سیستم اشتراک زمانی" (PDF) . مجموعه مقالات 17-19 نوامبر 1970، کنفرانس مشترک کامپیوتری پاییز (FJCC) . پ. 357: مطبوعات AFIPS . صص 355-362. بایگانی شده (PDF) از نسخه اصلی در 2012-08-19 . بازیابی شده در 29-01-2013 . استفاده از یک تابع "خط جدید" (ترکیب کالسکه-بازگشت و تغذیه خط) هم برای انسان و هم برای ماشین ساده تر از نیاز به هر دو عملکرد برای شروع یک خط جدید است. استاندارد ملی آمریکا X3.4-1968 به کد تغذیه خط اجازه می دهد تا معنای خط جدید را داشته باشد.{{cite conference}}: CS1 maint: location (link)
  40. O'Sullivan, T. (1971-05-19), TELNET Protocol , Internet Engineering Task Force (IETF), pp. 4-5, RFC 158 , بایگانی شده از نسخه اصلی در 13/06/2016 ، بازیابی شده در 01-2013 -28 
  41. ^ Neigus, Nancy J. (1973-08-12), File Transfer Protocol , Internet Engineering Task Force (IETF), RFC 542 , بایگانی شده از نسخه اصلی در 2016-06-13 , بازیابی شده 2013-01-28 
  42. Postel، Jon (ژوئن 1980)، پروتکل انتقال فایل ، گروه وظیفه مهندسی اینترنت (IETF)، RFC 765 ، بایگانی شده از نسخه اصلی در 2016-06-13 ، بازیابی شده در 2013-01-28 
  43. «طرح ترجمه EOL برای Mercurial» . دمدمی مزاج. بایگانی شده از نسخه اصلی در 2016-06-16 . بازیابی شده در 2017-06-24 .
  44. برنشتاین، دانیل جی. "LFs لخت در SMTP" . بایگانی شده از نسخه اصلی در 2011-10-29 . بازیابی شده در 2013-01-28 .
  45. ^ راهنمای رابط CP/M 1.4 (PDF) . تحقیقات دیجیتال . 1978. ص. 10. بایگانی شده (PDF) از نسخه اصلی در 2019-05-29 . بازیابی شده در 2017-10-07 .
  46. Cerf، Vinton Gray (1969-10-16)، فرمت ASCII برای تبادل شبکه، گروه کاری شبکه، RFC 20 ، بایگانی شده از نسخه اصلی در 2016-06-13 ، بازیابی شده در 2016-06-13 (نکته. عبارت تقریباً یکسان با USAS X3.4-1968 به جز مقدمه.)
  47. هاینز، جیم (13-01-2015). "دست اول: چاد مهم ترین محصول ما است: خاطره یک مهندس از شرکت تله تایپ" . ویکی تاریخچه مهندسی و فناوری (ETHW). بایگانی شده از نسخه اصلی در 2016-10-31 . بازیابی شده در 2016-10-31 . از ASCII 1961 به ASCII 1968 تغییر کرد. برخی از زبان های کامپیوتری در سال 1961 از کاراکترهایی مانند فلش بالا و فلش چپ استفاده کردند. این شخصیت ها از سال 1968 ASCII ناپدید شدند. ما با فرد موکینگ، که تا به حال در Sales در Teletype بود، روی استوانه‌ای کار کردیم که شخصیت‌های در حال تغییر را به خطر می‌اندازد تا مفاهیم ASCII 1961 کاملاً از بین نرود. کاراکتر زیر خط تقریباً گوه ای شکل ساخته شده بود بنابراین می تواند به عنوان یک فلش سمت چپ نیز عمل کند.
  48. ^ بمر، رابرت ویلیام . "Bemer مطابق با اروپا (استانداردهای کامپیوتری) - عکس های تاریخچه کامپیوتر" . Trailing-edge.com. بایگانی شده از نسخه اصلی در 2013-10-17 . بازیابی شده در 2008-04-14 .(نکته. بمر در آن زمان در IBM کار می کرد.)
  49. «رابرت ویلیام بمر: بیوگرافی» . 09/03/2013. بایگانی شده از نسخه اصلی در 2016-06-16.
  50. جانسون، لیندون بینز (11-03-1968). "یادداشت تصویب تصویب کد استاندارد برای تبادل اطلاعات توسط دولت فدرال" . پروژه ریاست جمهوری آمریکا بایگانی شده از نسخه اصلی در 2007-09-14 . بازیابی شده در 2008-04-14 .
  51. ریچارد اس شافورد (1996-12-20). "Re: تاریخ اولیه ASCII؟" . گروه خبریalt.folklore.computers . Usenet: [email protected] . 
  52. ^ فولتز، هارولد سی. کارپ، هری، ویراستاران. (1982-02-01). تدوین استانداردهای ارتباطات داده (ویرایش دوم ویرایش شده). مک گراو-هیل شرکت شابک  978-0-07-021457-6.
  53. دوبوست، کارل (06-05-2008). "رشد UTF-8 در وب" . وبلاگ W3C . کنسرسیوم وب جهانی بایگانی شده از نسخه اصلی در 2016-06-16 . بازیابی شده در 2010-08-15 .
  54. ^ a b دیویس، مارک (2008-05-05). "حرکت به یونیکد 5.1" . وبلاگ رسمی گوگل بایگانی شده از نسخه اصلی در 2016-06-16 . بازیابی شده در 2010-08-15 .
  55. دیویس، مارک (2010-01-28). "یونیکد نزدیک به 50٪ از وب" . وبلاگ رسمی گوگل بایگانی شده از نسخه اصلی در 2016-06-16 . بازیابی شده در 2010-08-15 .
  56. «معیارهای خاص»، پیوست به یادداشت از RW Reach، «جلسه X3-2 – 14 و 15 سپتامبر»، 18 سپتامبر 1961
  57. ^ Maréchal, R. (1967-12-22), ISO/TC 97 - کامپیوترها و پردازش اطلاعات: پذیرش پیش نویس توصیه ISO شماره 1052
  58. کنسرسیوم یونیکد (2006-10-27). "فصل 13: مناطق ویژه و شخصیت های قالب" (PDF) . در آلن، جولی دی (ویرایشگر). استاندارد یونیکد، نسخه 5.0 . Upper Saddle River، نیوجرسی، ایالات متحده: Addison-Wesley Professional . پ. 314. شابک  978-0-321-48091-0. بازیابی 2015-03-13 .
  59. ^ "utf-8(7) – صفحه راهنمای لینوکس" . Man7.org. 26/02/2014. بایگانی شده از نسخه اصلی در 2014-04-22 . بازیابی شده در 2014-04-21 .

ادامه مطلب

پیوندهای خارجی