ASCII - ASCII

ASCII
USASCII kodu chart.png
1972 öncesi bir yazıcı kılavuzundan ASCII tablosu
MIME / IANA us-ascii
takma ad(lar) ISO-IR-006, ANSI_X3.4-1968, ANSI_X3.4-1986, ISO_646.irv:1991, ISO646-US, us, IBM367, cp367
Diller) İngilizce
sınıflandırma ISO 646 serisi
Uzantılar
Öncesinde ITA 2 , ALAN VERİLERİ
tarafından başarıldı ISO 8859 , Unicode

ASCII ( / æ s k i / ( dinlemek ) Bu ses hakkında ASS -kee dan kısaltılır), Bilgi Değişimi İçin Amerikan Standart Kodu , bir olduğunu kodlayan karakter elektronik iletişim için bir standart. ASCII kodları bilgisayarlar, telekomünikasyon ekipmanı ve diğer cihazlardaki metni temsil eder . Modern karakter kodlama şemalarının çoğu, birçok ek karakteri desteklemelerine rağmen ASCII'ye dayanmaktadır.

Internet Assigned Numbers Authority (IANA) adı tercih ABD-ASCII bu karakter kodlama için.

ASCII, IEEE kilometre taşlarından biridir .

genel bakış

ASCII, telgraf kodundan geliştirilmiştir . İlk ticari kullanımı, Bell veri servisleri tarafından tanıtılan yedi bitlik bir teleprinter koduydu . ASCII standardı üzerindeki çalışmalar, Amerikan Standartlar Birliği'nin (ASA) (şimdi Amerikan Ulusal Standartlar Enstitüsü veya ANSI) X3.2 alt komitesinin ilk toplantısıyla Mayıs 1961'de başladı . Standardın ilk baskısı 1963'te yayınlandı, 1967'de büyük bir revizyona uğradı ve en son güncellemesini 1986'da yaşadı. Daha önceki telgraf kodlarıyla karşılaştırıldığında, önerilen Bell kodu ve ASCII'nin her ikisi de daha uygun sıralama (yani alfabetik) için sıralandı. ) tele yazıcılar dışındaki cihazlar için listeler ve eklenen özellikler.

Network Interchange için ASCII formatının kullanımı 1969'da açıklandı. Bu belge 2015'te resmen bir İnternet Standardına yükseltildi.

Orijinal olarak İngiliz alfabesine dayanan ASCII, yukarıdaki ASCII tablosunda gösterildiği gibi 128 belirtilen karakteri yedi bit tam sayılara kodlar . Kodlanmış karakterlerin doksan beşi yazdırılabilir: bunlar arasında 0 ila 9 arasındaki rakamlar , a ila z arasındaki küçük harfler , A ila Z arasındaki büyük harfler ve noktalama işaretleri bulunur . Ek olarak, orijinal ASCII spesifikasyonu , Teletype makinelerinden kaynaklanan 33 yazdırılmayan kontrol kodunu içeriyordu ; satır başı , satır besleme ve sekme kodları gibi birkaçı hala yaygın olarak kullanılmaktadır, ancak bunların çoğu artık kullanılmamaktadır .

Örneğin, küçük harf i , ASCII kodlamasında ikili 1101001 = onaltılık 69 ( i dokuzuncu harftir) = ondalık 105 ile temsil edilir.

Tarih

ASCII (1963). Eşdeğer kontrollerin kontrol resimleri , bulundukları yerde, aksi takdirde gri bir nokta ile gösterilir.

Bilgi Değişimi için Amerikan Standart Kodu (ASCII), X3 komitesi olarak adlandırılan Amerikan Standartlar Birliği'nin (ASA) bir komitesinin himayesinde , X3.2 (daha sonra X3L2) alt komitesi ve daha sonra bu alt komitenin X3'ü tarafından geliştirilmiştir. 2.4 çalışma grubu (şimdi INCITS ). ASA, Amerika Birleşik Devletleri Standartlar Enstitüsü (USASI) ve nihayetinde Amerikan Ulusal Standartlar Enstitüsü (ANSI) oldu.

Doldurulan diğer özel karakterler ve kontrol kodları ile ASCII, ASA X3.4-1963 olarak yayınlandı, 28 kod pozisyonu atanmış herhangi bir anlam olmadan, gelecekteki standardizasyon için ayrılmış ve bir atanmamış kontrol kodu bıraktı. Küçük harfli alfabe yerine daha fazla kontrol karakteri olması gerekip gerekmediği konusunda bazı tartışmalar vardı. Kararsızlık uzun sürmedi: Mayıs 1963'te CCITT Yeni Telgraf Alfabesi Çalışma Grubu, 6 ve 7 numaralı çubuklara küçük harfler atamayı önerdi ve Uluslararası Standardizasyon Örgütü TC 97 SC 2, değişikliği kendi taslak standardına dahil etmek için Ekim ayında oy kullandı. . X3.2.4 görev grubu, Mayıs 1963 toplantısında ASCII'deki değişikliğin onayını oyladı. 6. ve 7. çubuklarda küçük harflerin bulunması, karakterlerin bit deseninde büyük harften tek bir bit kadar farklı olmasına neden oldu, bu da büyük/küçük harfe duyarsız karakter eşleştirmeyi ve klavyelerin ve yazıcıların yapısını basitleştirdi .

X3 komitesi, diğer yeni karakterler ( köşeli ayraç ve dikey çubuk karakterleri), bazı kontrol karakterlerini yeniden adlandırma (SOM, başlığın başlangıcı (SOH) oldu) ve diğerlerini taşıma veya kaldırma (RU kaldırıldı) dahil olmak üzere başka değişiklikler yaptı . ASCII daha sonra USAS X3.4-1967, ardından USAS X3.4-1968, ANSI X3.4-1977 ve son olarak ANSI X3.4-1986 olarak güncellendi.

ASCII standardının revizyonları:

  • ASA X3.4-1963
  • ASA X3.4-1965 (onaylandı, ancak yayınlanmadı, buna rağmen IBM 2260 ve 2265 Display Stations ve IBM 2848 Display Control tarafından kullanılıyor)
  • USAS X3.4-1967
  • USAS X3.4-1968
  • ANSI X3.4-1977
  • ANSI X3.4-1986
  • ANSI X3.4-1986 (R1992)
  • ANSI X3.4-1986 (R1997)
  • ANSI, 4-1986 (R2002)
  • ANSI, 4-1986 (R2007)
  • (ANSI) 4-1986'YI KAÇIRIYOR[R2012]
  • (ANSI) 4-1986'YI KAÇIRIYOR[R2017]

X3.15 standardında, X3 komitesi ayrıca ASCII'nin nasıl iletilmesi gerektiğini (önce en az anlamlı bit ) ve bunun delikli teybe nasıl kaydedilmesi gerektiğini ele aldı. Manyetik bant için 9 kanallı bir standart önerdiler ve bazı delikli kart formatlarıyla uğraşmaya çalıştılar .

Tasarım konuları

bit genişliği

X3.2 alt komitesi, daha önceki teleprinter kodlama sistemlerine dayalı olarak ASCII'yi tasarladı. Diğer karakter kodlamaları gibi , ASCII de dijital bit desenleri ve karakter sembolleri (yani, grafikler ve kontrol karakterleri ) arasındaki bir yazışmayı belirtir . Bu, dijital cihazların birbirleriyle iletişim kurmasına ve yazılı dil gibi karakter odaklı bilgileri işlemesine, depolamasına ve iletmesine olanak tanır . ASCII geliştirilmeden önce, kullanılan kodlamalar 26 alfabetik karakter, 10 sayısal basamak ve 11 ila 25 özel grafik sembolü içeriyordu. Tüm bunları ve Comité Consultatif International Téléphonique et Télégraphique (CCITT) Uluslararası Telgraf Alfabesi No. 2 (ITA2) 1924, FIELDATA (1956) ve erken EBCDIC (1963) ile uyumlu kontrol karakterlerini dahil etmek için 64'ten fazla kod vardı. ASCII için gereklidir.

ITA2, Émile Baudot'un 1870'de icat ettiği ve 1874'te patentini aldığı 5 bitlik telgraf koduna dayanıyordu .

Komite , 64'ten fazla kodun altı bitlik bir kodla temsil edilmesine izin verecek bir kaydırma işlevinin ( ITA2'deki gibi ) olasılığını tartıştı . Kaydırılan bir kodda, bazı karakter kodları, aşağıdaki karakter kodları için seçenekler arasındaki seçenekleri belirler. Kompakt kodlamaya izin verir, ancak veri aktarımı için daha az güvenilirdir , çünkü kaydırma kodunun iletilmesindeki bir hata tipik olarak iletimin uzun bir bölümünü okunamaz hale getirir. Standartlar komitesi kaymaya karşı karar verdi ve bu nedenle ASCII en az yedi bitlik bir kod gerektirdi.

Komite, sekiz bitlik bir kodu düşündü, çünkü sekiz bit ( sekizler ), iki dört bitlik desenin, ikili kodlu ondalık sayı ile iki basamağı verimli bir şekilde kodlamasına izin verecekti . Ancak, yedi bit yeterli olduğunda, tüm veri iletiminin sekiz bit göndermesini gerektirecektir. Komite, veri iletimiyle ilgili maliyetleri en aza indirmek için yedi bitlik bir kod kullanmaya karar verdi. Zamanda delikli bant bir pozisyonda sekiz bit kayıt olabilir beri, aynı zamanda bir izin eşlik biti için hata kontrolü istenirse. Eşlik denetimi kullanmayan sekiz bitlik makineler (yerel veri türü olarak sekizli) tipik olarak sekizinci biti 0'a ayarlar.

iç organizasyon

Kodun kendisi, tanımlama kolaylığı için çoğu kontrol kodu ve tüm grafik kodları bir arada olacak şekilde modellenmiştir. İlk iki sözde ASCII çubuğu (32 konum) kontrol karakterleri için ayrılmıştı. "Boşluk" karakteri yapmak için grafik önce gelmek zorunda sıralama bu konumunu belirlemeye 20. oldu böylece daha kolay altıgen ; Aynı nedenle, ayırıcı olarak yaygın olarak kullanılan birçok özel işaret, rakamların önüne yerleştirildi. Komite, büyük harfli 64 karakterli alfabeleri desteklemenin önemli olduğuna karar verdi ve DEC SIXBIT kodunda (1963) yapıldığı gibi, kolayca kullanılabilir 64 karakterlik bir grafik kod grubuna indirgenebilmesi için ASCII modelini seçti . Bu nedenle küçük harfler büyük harflerle karıştırılmamıştır. Küçük harfler ve diğer grafikler için seçenekleri mevcut tutmak için, özel ve sayısal kodlar harflerin önüne yerleştirildi ve A harfi karşılık gelen İngiliz standardının taslağına uyması için 41 hex konumuna yerleştirildi . 0-9 arasındaki rakamların önüne 011 eklenir, ancak kalan 4 bit ikili olarak ilgili değerlerine karşılık gelir ve ikili kodlu ondalık sayı ile dönüştürmeyi kolaylaştırır .

Alfanümerik olmayan karakterlerin çoğu, daktilolardaki kaydırılmış konumlarına karşılık gelecek şekilde yerleştirildi; Önemli bir incelik, bunların elektrikli daktilolara değil , mekanik daktilolara dayanmasıdır . Mekanik daktilolar, kaydırma tuşu olan ilk daktilo olan Remington No. 2 (1878) tarafından belirlenen standardı izledi ve kaydırılan değerleri vardı  - erken daktilolarda O (büyük harf o ) ve l (küçük harf ) kullanılarak 0 ve 1 atlandı L ) yerine, ancak ve 0 ve 1 ortak hale geldiğinde ve çiftleri standart hale geldi. Böylece, ASCII'de , bitişik çubuktaki 1-5 rakamlarına karşılık gelen 1-5 konumları ikinci çubuğa yerleştirildi. Ancak parantezler 9 ve 0'a karşılık gelemez , çünkü 0'a karşılık gelen yer boşluk karakteri tarafından alınmıştır. Bu, 6'dan (alt çizgi) kaldırılarak ve kalan karakterleri kaydırarak yerine getirildi; bu, parantezleri 8 ve 9 ile yerleştiren birçok Avrupalı ​​daktiloya karşılık geldi . Daktilolardaki bu farklılık, bit eşli klavyelere , özellikle de geleneksel mekanik daktilolara değil, ASCII'ye karşılık gelen sola kaydırılmış düzeni kullanan Teletype Model 33'e yol açtı . Elektrikli daktilolar, özellikle IBM Selectric (1961), bilgisayarlarda standart hale gelen biraz farklı bir düzen kullandı - IBM PC'yi (1981), özellikle Model M'yi (1984) takiben - ve bu nedenle, modern klavyelerdeki semboller için kaydırma değerleri birbirine uymuyor. ASCII tablosuna daha önceki klavyelerde olduğu kadar yakın. Çifti de 2 Nolu tarihleri ve çiftleri (shift vermedi 2 Nolu dahil olmak üzere diğer bazı klavyelerde kullanılmıştır (virgül) ya da onlar unshifting olmadan büyük harfle kullanılabilir böylece (tam durak)). Ancak, ASCII çifti (No. 2'ye tarihlenen) böldü ve matematiksel sembolleri (çeşitli konvansiyonlar, genellikle ) olarak yeniden düzenledi . 23456789-"#$%_&'()1!0)!"#$%_/?,< .>,.;:-* =+:* ;+ -=

Bazı yaygın karakterler dahil edilmedi, özellikle ½¼¢, ^`~uluslararası kullanım ve <>matematiksel kullanım için aksan olarak dahil edildi , basit satır karakterleriyle birlikte \|(ortak karaktere ek olarak /). @ Sembolü kıta Avrupa'da kullanılmamıştır ve komite bir aksanlı yerini olacağını tahmin À yüzden, Fransız varyasyon @ pozisyonu 40 yerleştirildi onaltılık sağ A harfinin önce

Veri iletimi için gerekli hissedilen kontrol kodları mesajın başlangıcı (SOM), adres sonu (EOA), mesajın sonu (EOM), iletimin sonu (EOT), "kimsin sen?" (WRU), "sen misin?" (RU), ayrılmış bir cihaz kontrolü (DC0), senkron boşta (SYNC) ve onay (ACK). Bunlar , bit desenleri arasındaki Hamming mesafesini maksimize edecek şekilde yerleştirildi .

Karakter sırası

ASCII-kod sırasına ASCIIbetik sıra da denir . Verilerin harmanlanması bazen "standart" alfabetik sıra ( harmanlama sırası ) yerine bu sırayla yapılır . ASCII düzenindeki ana sapmalar şunlardır:

  • Tüm büyük harfler küçük harflerden önce gelir; örneğin, "Z", "a"dan önce gelir
  • Rakamlar ve birçok noktalama işareti harflerden önce gelir

Bir ara sıra, ASCII değerlerini karşılaştırmadan önce büyük harfleri küçük harflere dönüştürür.

Karakter grupları

Kontrol karakterleri

ASCII, kontrol karakterleri için ilk 32 kodu (0-31 ondalık sayılar) ayırır : orijinal olarak yazdırılabilir bilgileri temsil etmeyi değil, ASCII'yi kullanan cihazları ( yazıcılar gibi ) kontrol etmeyi veya veriler hakkında meta bilgi sağlamayı amaçlayan kodlar manyetik bantta depolananlar gibi akışlar.

Örneğin, karakter 10 "satır besleme" işlevini temsil eder (yazıcının kağıdını ilerletmesine neden olur) ve karakter 8 "geri al" işlevini temsil eder. RFC  2822 satır, satır besleme veya kapsamamaktadır kontrol karakterleri belirtir boşluk boşluk olmayan kontrol karakterleri olarak. Temel satır yönelimli biçimlendirmeyi belirleyen kontrol karakterleri dışında, ASCII, bir belge içindeki metnin yapısını veya görünümünü açıklamak için herhangi bir mekanizma tanımlamaz. İşaretleme dilleri , adres sayfası ve belge düzeni ve biçimlendirmesi gibi diğer şemalar .

Orijinal ASCII standardı, her kontrol karakteri için yalnızca kısa tanımlayıcı ifadeler kullandı. Bunun neden olduğu belirsizlik bazen kasıtlıydı, örneğin bir karakterin bir terminal bağlantısında bir veri akışındakinden biraz farklı şekilde ve bazen de örneğin "sil" anlamında kazara kullanıldığı durumlarda.

Bu karakterlerin yorumlanmasında muhtemelen en etkili tek cihaz, mevcut bir kağıt şerit okuyucu/delme seçeneğine sahip bir baskı terminali olan Teletype Model 33 ASR idi . Kağıt bant, 1980'lere kadar uzun vadeli program depolama için çok popüler bir ortamdı, manyetik banttan daha az maliyetli ve bazı yönlerden daha az kırılgandı. Özellikle, kodlar 17 (Control-Q, DC1, XON olarak da bilinir), 19 (Control-S, DC3, XOFF olarak da bilinir) ve 127 ( Delete ) için Teletype Model 33 makine atamaları fiili standartlar haline geldi. Model 33 ayrıca, ünite bir BEL karakteri aldığında çalan gerçek bir zil içerdiğinden, Control-G'nin (kod 7, BEL, operatörü sesli olarak uyarmak anlamına gelir) tanımını tam anlamıyla almasıyla da dikkate değerdi. O tuşunun klavyesi ayrıca bir sol ok sembolü gösterdiğinden ( alt çizgi yerine bu karaktere sahip olan ASCII-1963'ten ), kod 15'in (Control-O, Shift In) uyumlu olmayan bir kullanımı "önceki karakteri sil" olarak yorumlandı birçok erken devre paylaşım sistemi tarafından da benimsendi, ancak sonunda ihmal edildi.

Otomatik kağıt şerit okuyucu ile donatılmış bir Teletype 33 ASR, bir Control-S (XOFF, iletim kapalı için bir kısaltma) aldığında, şerit okuyucunun durmasına neden oldu; Control-Q'nun (XON, "iletim açık") alınması, şerit okuyucunun devam etmesine neden oldu. Bu teknik, birkaç erken bilgisayar işletim sistemi tarafından, yaklaşan taşma nedeniyle göndericiyi iletimi durdurması için uyaran bir "tokalaşma" sinyali olarak benimsendi; bu güne kadar birçok sistemde manuel çıktı kontrol tekniği olarak varlığını sürdürmektedir. Bazı sistemlerde Control-S anlamını korur, ancak çıkışı sürdürmek için Control-Q ikinci bir Control-S ile değiştirilir. 33 ASR ayrıca şerit delgiyi başlatmak ve durdurmak için Control-R (DC2) ve Control-T (DC4) kullanacak şekilde yapılandırılabilir; bu işlevle donatılmış bazı ünitelerde, harfin üzerindeki tuş başlığında karşılık gelen kontrol karakteri harfleri sırasıyla TAPE ve TAPE idi.

Sil ve Geri Al

Teletype, kafayı geriye doğru hareket ettiremedi, bu yüzden klavyeye bir BS (backspace) göndermek için bir tuş koymadı. Bunun yerine, RUB OUT127 (DEL) kodunu gönderen işaretli bir anahtar vardı . Bu anahtarın amacı, elle yazılmış bir kağıt banttaki hataları silmekti: operatörün, onu yedeklemek için bant delgisinin üzerindeki bir düğmeye basması, ardından tüm delikleri açan ve hatayı şu karakterle değiştiren ovalamayı yazması gerekiyordu. göz ardı edilmek istendi. Teletipler, Digital Equipment Corporation'ın daha ucuz bilgisayarları için yaygın olarak kullanılıyordu , bu nedenle bu sistemler önceki karakteri silmek için mevcut anahtarı ve dolayısıyla DEL kodunu kullanmak zorunda kaldı. Bu nedenle, DEC video terminalleri (varsayılan olarak) "Backspace" ile işaretlenmiş tuş için DEL kodunu gönderirken "Delete" ile işaretlenmiş tuş bir kaçış dizisi gönderirken, diğer birçok terminal Backspace tuşu için BS göndermiştir. Unix terminal sürücüsü, önceki karakteri silmek için yalnızca bir kod kullanabilir, bu, BS veya DEL olarak ayarlanabilir , ancak ikisi birden olamaz, bu da kullanıcıların hangi terminali kullandıklarına (kabuklar) bağlı olarak düzeltmek zorunda kaldıkları uzun bir sıkıntı süresine neden olur. ksh , bash ve zsh gibi satır düzenlemeye izin veren her ikisini de anlayın). Hiçbir anahtarın bir BS göndermediği varsayımı, Control+H'nin GNU Emacs'taki "help" öneki komutu gibi başka amaçlar için kullanılmasına neden oldu .

Kaçmak

Daha birçok kontrol koduna orijinallerinden oldukça farklı anlamlar verilmiştir. Örneğin "kaçış" karakteri (ESC, kod 27), orijinal olarak, anlamlarını çağırmak yerine diğer kontrol karakterlerini değişmez değerler olarak göndermeye izin vermek için tasarlanmıştır. Bu, URL kodlamalarında, C dili dizelerinde ve belirli karakterlerin ayrılmış bir anlama sahip olduğu diğer sistemlerde karşılaşılan "kaçış"ın aynı anlamıdır. Zamanla bu anlam benimsenmiş ve sonunda değiştirilmiştir. Modern kullanımda, terminale gönderilen bir ESC genellikle ECMA-48'den genellikle " ANSI kaçış kodu " (veya daha doğrusu " Kontrol Dizisi Tanıtıcı ") olarak adlandırılan bir komut dizisinin başlangıcını gösterir ( 1972) ve ardılları, ESC ile başlayan ve ardından bir "[" (sol ayraç) karakteri. Terminalden gönderilen bir ESC, çoğunlukla TECO ve vi metin düzenleyicilerinde olduğu gibi, bir işlemi sonlandırmak için kullanılan bant dışı bir karakter olarak kullanılır . Olarak , grafik kullanıcı arabirimi (GUI) ve pencereleme sistemleri ESC genel olarak geçerli işlemi veya iptal etmek için bir uygulama neden olur çıkış tamamen (sonlandırmak).

Yolun sonu

Birçok kontrol karakterinin doğasında var olan belirsizliği, tarihsel kullanımlarıyla birleştiğinde, sistemler arasında "düz metin" dosyaları aktarılırken sorunlar yaratmıştır. Buna en iyi örnek , çeşitli işletim sistemlerindeki yeni satır sorunudur . Teletype makineleri, bir metin satırının hem "Satır Başı" (yazıcı kafasını satırın başına hareket ettirir) hem de "Satır Besleme" (yazıcı kafasını hareket ettirmeden kağıdı bir satır ilerletir) ile sonlandırılmasını gerektiriyordu. "Satır Başı " adı, manuel bir daktiloda , daktilo çubuklarının şeride çarptığı konum sabit kalırken kağıdı tutan taşıyıcının hareket etmesi gerçeğinden gelir . Kağıdın sol kenar boşluğunu bir sonraki satıra yerleştirmek için tüm taşıyıcının sağa itilmesi (geri döndürülmesi) gerekiyordu.

DEC işletim sistemleri ( OS/8 , RT-11 , RSX-11 , RSTS , TOPS-10 , vb.), konsol cihazının (başlangıçta Teletype makinelerinin ) çalışabilmesi için bir satırın sonunu işaretlemek için her iki karakteri de kullandı . Sözde "cam TTY'ler" (daha sonra CRT'ler veya terminaller olarak anılacaktır) ortaya çıktığında, sözleşme o kadar iyi kurulmuştu ki, geriye dönük uyumluluk, sözleşmenin devam etmesini gerektiriyordu. Tüm Gary Kildall oluşturulan CP / M o kullanılan bazı komut hat ara-yüz sözleşmeler esinlenerek Aralık sitesindeki RT-11 . 1981'de PC DOS'un piyasaya sürülmesine kadar IBM'in bu konuda hiçbir eli yoktu çünkü 1970'lerdeki işletim sistemleri ASCII yerine EBCDIC kullanıyordu ve satır başı kavramının anlamsız olduğu delikli kart girişi ve satır yazıcı çıkışına yönelikti. IBM'in PC DOS'u ( Microsoft tarafından MS-DOS olarak da pazarlanmaktadır ), CP/M'ye gevşek bir şekilde dayalı olması nedeniyle sözleşmeyi devraldı ve Windows bunu MS-DOS'tan devraldı.

Ne yazık ki, bir satırın sonunu işaretlemek için iki karaktere ihtiyaç duyulması, gereksiz karmaşıklığı ve tek başına karşılaşıldığında her bir karakterin nasıl yorumlanacağına dair soruları beraberinde getirir. Sorunları basitleştirmek için , dosyalar dahil olmak üzere düz metin veri akışları, Multics'te satır sonlandırıcı olarak tek başına satır besleme (LF) kullandı. Unix ve Unix benzeri sistemler ve Amiga sistemleri Multics'ten bu kuralı benimsemiştir. Orijinal Macintosh OS , Apple DOS ve ProDOS ise satır sonlandırıcı olarak tek başına satır başı (CR) kullandı; ancak Apple bu işletim sistemlerini Unix tabanlı macOS işletim sistemiyle değiştirdiği için artık satır besleme (LF) de kullanıyorlar. Radio Shack TRS-80 ayrıca hatları sonlandırmak için yalnız bir CR kullandı.

ARPANET'e bağlı bilgisayarlar, CR-LF satır sonlarını kullanan TOPS-10 ve TENEX gibi işletim sistemlerini çalıştıran makineleri, LF satır sonlarını kullanan Multics gibi işletim sistemlerini çalıştıran makineleri ve hatları şu şekilde temsil eden OS/360 gibi işletim sistemlerini çalıştıran makineleri içeriyordu. satırın karakterlerinin ardından gelen ve ASCII yerine EBCDIC kullanan bir karakter sayısı . Telnet protokolü bir ASCII "tanımlı Ağ Sanal Terminali farklı satır sonlandırma sözleşme ve karakter setleri ile ana arasındaki bağlantılar ağ üzerinden standart bir metin biçimi iletilmesi tarafından desteklenen olabilir böylece," (NVT). Telnet, CR-LF satır sonlarıyla birlikte ASCII'yi kullandı ve diğer kuralları kullanan yazılımlar, yerel kurallar ve NVT arasında çeviri yapacaktı. Dosya Aktarım Protokolü komutları ileten ve varsayılan ASCII modunda veri aktarımı sırasında kullanılmak üzere ağ sanal Terminal kullanımını içeren Telnet protokolü onayladı. Bu, NVT'nin CR-LF hat sonlandırma kuralını kullanmayan sistemlerde bu protokollerin uygulamalarına ve E-posta ve World Wide Web için kullanılanlar gibi diğer ağ protokollerine karmaşıklık katar.

Dosya/Akışın Sonu

PDP-6 monitörü ve onun PDP-10 halefi TOPS-10, bir terminalden giriş için dosya sonu göstergesi olarak Control-Z'yi (SUB) kullandı. CP/M gibi bazı işletim sistemleri, dosya uzunluğunu yalnızca disk blok birimlerinde izledi ve dosyadaki asıl metnin sonunu işaretlemek için Control-Z kullandı. Bu nedenlerle, EOF veya dosya sonu , halk dilinde ve geleneksel olarak , SUBstitute yerine Control-Z için üç harfli bir kısaltma olarak kullanılmıştır . Control-C olarak da bilinen metin sonu kodu ( ETX ), çeşitli nedenlerle uygun değildi, ancak bir dosyayı sonlandırmak için kontrol kodu olarak Z'yi kullanmak, alfabeyi sonlandırmaya benzer ve çok uygun bir kod işlevi görür. anımsatıcı yardım . Tarihsel olarak yaygın ve hala yaygın olan bir kural, genellikle bir klavyeden bir giriş veri akışı yoluyla bir programı kesmek ve durdurmak için ETX kod kuralını kullanır.

C kitaplığı ve Unix kurallarında, metin dizelerini sonlandırmak için boş karakter kullanılır ; bu tür boş sonlandırılmış dizeler , burada Z'nin "sıfır" anlamına geldiği ASCIZ veya ASCIIZ olarak kısaltma olarak bilinebilir.

Kontrol kodu tablosu

İkili Ekim Aralık altıgen Kısaltma İsim (1967)
1963 1965 1967
000 0000 000 0 00 BOŞ NUL ^@ \0 Boş
000 0001 001 1 01 SOM SOH ^A Başlık Başlangıcı
000 0010 002 2 02 EOA STX ^B Metnin Başlangıcı
000 0011 003 3 03 EOM ETX ^C Metnin Sonu
000 0100 004 4 04 EOT ^D İletimin Sonu
000 0101 005 5 05 WRU ENQ ^E Soruşturma
000 0110 006 6 06 RU ACK ^F teşekkür
000 0111 007 7 07 ZİL BEL ^G \a zil
000 1000 010 8 08 FE0 BS ^H \B geri al
000 1001 011 9 09 HT/SK HT ^ ben \T Yatay sekme
000 1010 012 10 0A LF ^J \n Satır besleme
000 1011 013 11 0B VTAB VT ^K \v Dikey Sekme
000 1100 014 12 0C FF ^L \F Form besleme
000 1101 015 13 0D CR ^M \r Satırbaşı
000 1110 016 14 0E BU YÜZDEN ^H Dışarı Kaydır
000 1111 017 15 0F ^O Vardiya
001 0000 020 16 10 DC0 DLE ^P Veri Bağlantısından Kaçış
001 0001 021 17 11 DC1 ^Q Cihaz Kontrolü 1 (genellikle XON )
001 0010 022 18 12 DC2 ^R Cihaz Kontrolü 2
001 0011 023 19 13 DC3 ^S Cihaz Kontrolü 3 (genellikle XOFF )
001 0100 024 20 14 DC4 ^T Cihaz Kontrolü 4
001 0101 025 21 15 HATA NAK ^U Olumsuz Teşekkür
001 0110 026 22 16 SENKRON SYN ^V Senkron Boşta
001 0111 027 23 17 LEM ETB ^W İletim Bloğunun Sonu
001 1000 030 24 18 S0 YAPABİLMEK ^X İptal
001 1001 031 25 19 S1 EM ^Y Orta Sonu
001 1010 032 26 1 A S2 SS ALT ^Z Yerine geçmek
001 1011 033 27 1B S3 ESC ^[ \e Kaçmak
001 1100 034 28 1C S4 FS ^\ Dosya Ayırıcı
001 1101 035 29 1B S5 GS ^] Grup Ayırıcı
001 1110 036 30 1E S6 RS ^^ Kayıt Ayırıcı
001 1111 037 31 1F S7 Biz ^_ Birim Ayırıcı
111 1111 177 127 7F DEL ^? Silmek

Diğer gösterimler, örneğin ISO 2047 grafikleri veya onaltılık sayılar gibi özel ekipman tarafından kullanılabilir .

Yazdırılabilir karakterler

Yazdırılabilir karakterler olarak bilinen 20 hex ila 7E hex arasındaki kodlar harfleri, rakamları, noktalama işaretlerini ve birkaç çeşitli sembolü temsil eder . Toplamda 95 yazdırılabilir karakter vardır.

Kod 20 hex , "boşluk" karakteri , bir klavyenin boşluk çubuğu tarafından üretildiği gibi sözcükler arasındaki boşluğu belirtir. Boşluk karakteri (kontrol karakteri yerine) görünmez bir grafik olarak kabul edildiğinden, önceki bölüm yerine aşağıdaki tabloda listelenmiştir.

Kod 7F onaltılı yazdırılamayan "sil" (DEL) kontrol karakterine karşılık gelir ve bu nedenle bu tablodan çıkarılmıştır; önceki bölümün tablosunda ele alınmıştır. ASCII'nin önceki sürümleri, şapka (5E onaltılık ) yerine yukarı oku ve alt çizgi (5F onaltılık ) yerine sol oku kullanıyordu .

İkili Ekim Aralık altıgen glif
1963 1965 1967
010 0000 040 32 20  Uzay
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 2B -
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 3 A :
011 1011 073 59 3B ;
011 1100 074 60 3C <
011 1101 075 61 3 boyutlu =
011 1110 076 62 3E >
011 1111 077 63 3F ?
100 0000 100 64 40 @ ` @
100 0001 101 65 41 A
100 0010 102 66 42 B
100 0011 103 67 43 C
100 0100 104 68 44 NS
100 0101 105 69 45 E
100 0110 106 70 46 F
100 0111 107 71 47 G
100 1000 110 72 48 H
100 1001 111 73 49 ben
100 1010 112 74 4A J
100 1011 113 75 4B K
100 1100 114 76 4C L
100 1101 115 77 4D m
100 1110 116 78 4E n
100 1111 117 79 4F Ö
101 0000 120 80 50 P
101 0001 121 81 51 Q
101 0010 122 82 52 r
101 0011 123 83 53 S
101 0100 124 84 54 T
101 0101 125 85 55 sen
101 0110 126 86 56 V
101 0111 127 87 57 W
101 1000 130 88 58 x
101 1001 131 89 59 Y
101 1010 132 90 5A Z
101 1011 133 91 5B [
101 1100 134 92 5C \ ~ \
101 1101 135 93 5D ]
101 1110 136 94 5E ^
101 1111 137 95 5F _
110 0000 140 96 60 @ `
110 0001 141 97 61 a
110 0010 142 98 62 B
110 0011 143 99 63 C
110 0100 144 100 64 NS
110 0101 145 101 65 e
110 0110 146 102 66 F
110 0111 147 103 67 G
110 1000 150 104 68 H
110 1001 151 105 69 ben
110 1010 152 106 6A J
110 1011 153 107 6B k
110 1100 154 108 6C ben
110 1101 155 109 6D m
110 1110 156 110 6E n
110 1111 157 111 6F Ö
111 0000 160 112 70 P
111 0001 161 113 71 Q
111 0010 162 114 72 r
111 0011 163 115 73 s
111 0100 164 116 74 T
111 0101 165 117 75 sen
111 0110 166 118 76 v
111 0111 167 119 77 w
111 1000 170 120 78 x
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 ESC | ~

Karakter seti

Önceki versiyonlarda (1963 versiyonu veya 1965 taslağı) farklı bir karakteri temsil eden noktalar kutulu olarak gösterilmiştir. 1963 versiyonundan bu yana atanan ancak başka şekilde değişmeyen noktalar, gösterge renklerine göre hafif gölgeli olarak gösterilir.

ASCII (1977/1986)
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _NS _E _F
0_
0
SIFIR
0000
SOH
0001
STX
0002
ETX
0003
EOT
0004
ENQ
0005
ACK
0006
BEL
0007
BS
0008
HT
0009
LF
000A
VT
000B
FF
000C
CR
000D
SO
000E
SI
000F
1_
16
DLE
0010
DC1
0011
DC2
0012
DC3
0013
DC4
0014
NAK
0015
SYN
0016
ETB
0017
CAN
0018
EM
0019
ALT
001A
ESC
001B
FS
001C
GS
001D
RS
001E
ABD
001F
2_
32
SP
0020
!
0021
"
0022
#
0023
0024 $
%
0025
&
0026
'
0027
(
0028
)
0029
*
002A
+
002B
,
002C
-
002D
.
002E
/
002F
3_
48
0
0030
1
0031
2
0032
3
0033
4
0034
5
0035
6
0036
7
0037
8
0038
9
0039
:
003A
;
003B
<
003C
=
003D
>
003E
?
003F
4_
64
@
0040
bir
0041
B
0042
C
0043
D
0044
E
0045
F
0046
G
0047
H
0048
ben
0049
J
004A
K
004B
L
004C
M
004D
N
004E
O
004F
5_
80
P
0050
Q,
0051
R,
0052
S
0053
T
0054
U
0055
V
0056
B
0057
X
0058
Y
0059
Z
005A
[
005B
\
005C
]
005D
^
005E
_
005F
6_
96
`
0060
bir
0061
b
0062
c
0063
d
0064
e
0065
f
0066
g
0067
saat
0068
ben
0069
j
006A
k
006B
l
006C
m
006D
n
006E
o
006F
7_
112
p
0070
q
0071
r
0072
s
0073
t
0074
u
0075
v
0076
ağırlık
0077
x
0078
y
0079
z
007A
{
007B
|
007C
}
007D
~
007E
DEL
007F

  Mektup  Sayı  Noktalama  Sembol  Başka  Tanımsız  1963 versiyonundan veya 1965 taslağından karakter değişti

Kullanmak

ASCII ticari olarak ilk olarak 1963 yılında American Telephone & Telegraph'ın TWX (TeletypeWriter eXchange) ağı için yedi bitlik bir teleprinter kodu olarak kullanıldı . TWX aslen önceki beş bitlik kullanılan ITA2 da rakip tarafından kullanılan, Teleks teleprinter sistemine. Bob Bemer , kaçış dizisi gibi özellikleri tanıttı . İngiliz meslektaşı Hugh McGregor Ross , bu çalışmanın popülerleşmesine yardımcı oldu - Bemer'e göre, "o kadar ki, ASCII olacak olan koda ilk olarak Avrupa'da Bemer-Ross Kodu deniyordu ". ASCII üzerindeki kapsamlı çalışmaları nedeniyle Bemer, "ASCII'nin babası" olarak anılmıştır.

11 Mart 1968'de ABD Başkanı Lyndon B. Johnson , Amerika Birleşik Devletleri Federal Hükümeti tarafından satın alınan tüm bilgisayarların ASCII'yi desteklemesini zorunlu kıldı :

Ayrıca Ticaret Bakanı'nın [ Luther H. Hodges ] Bilgi Değişimi için Standart Kodun bilgisayar işlemlerinde kullanıldığında manyetik bantlar ve kağıt bantlar üzerine kaydedilmesine ilişkin standartlarla ilgili tavsiyelerini de onayladım . 1 Temmuz 1969 tarihinde ve sonrasında Federal Hükümet envanterine eklenen tüm bilgisayarlar ve ilgili ekipman konfigürasyonları, Bilgi Değişimi için Standart Kodu ve bu ortamlar kullanıldığında manyetik bant ve kağıt bant standartlarında belirtilen formatları kullanma yeteneğine sahip olmalıdır.

ASCII, UTF-8 kodlamasının onu geçtiği Aralık 2007'ye kadar World Wide Web'de en yaygın karakter kodlamasıydı ; UTF-8, ASCII ile geriye dönük uyumludur.

Varyantlar ve türevler

Bilgisayar teknolojisi dünyaya yayıldıkça, farklı standart kuruluşları ve şirketler, Roman tabanlı alfabe kullanan İngilizce olmayan dillerin ifadesini kolaylaştırmak için birçok ASCII varyasyonu geliştirdi. Bu varyasyonlardan bazıları " ASCII uzantıları " olarak sınıflandırılabilir, ancak bazıları bu terimi ASCII'nin karakter haritasını 7 bit aralığında korumayanlar da dahil olmak üzere tüm varyantları temsil etmek için yanlış kullanır. Ayrıca, ASCII uzantıları da ASCII olarak yanlış etiketlenmiştir.

7 bit kodlar

ASCII, gelişiminin başlarından itibaren, uluslararası bir karakter kodu standardının çeşitli ulusal türevlerinden sadece biri olarak düşünülmüştü.

Diğer uluslararası standart kuruluşları, ASCII ile aynı veya neredeyse aynı olan ISO 646 (1967) gibi , İngiliz alfabesi dışındaki karakterler için uzantılar ve Birleşik Krallık sterlini sembolü gibi Amerika Birleşik Devletleri dışında kullanılan semboller gibi karakter kodlamalarını onayladı. (£). ASCII yalnızca ABD'nin ve diğer birkaç ülkenin ihtiyaçlarını karşıladığından, hemen hemen her ülkenin uyarlanmış bir ASCII sürümüne ihtiyacı vardı. Örneğin, Kanada'nın Fransızca karakterleri destekleyen kendi sürümü vardı.

Diğer birçok ülke, İngilizce olmayan harfleri (örneğin é , ñ , ß , Ł ), para birimi sembollerini (örneğin £ , ¥ ) vb. içerecek şekilde ASCII'nin türevlerini geliştirdi . Ayrıca bkz . YUSCII (Yugoslavya).

Çoğu karakteri ortak olarak paylaşır, ancak diğer yerel olarak yararlı karakterleri "ulusal kullanım" için ayrılmış birkaç kod noktasına atar . Bununla birlikte, ASCII-1963'ün yayınlanması ile 1967'de ISO'nun uluslararası bir tavsiyeyi ilk kabulü arasında geçen dört yıl, ASCII'nin ulusal kullanım karakterleri konusundaki seçimlerinin dünya için fiili standartlar gibi görünmesine neden oldu ve diğer ülkeler arasında kafa karışıklığına ve uyumsuzluğa neden oldu. bu kod noktalarına kendi atamalarını yapmaya başladılar.

ASCII gibi ISO/IEC 646 da 7 bitlik bir karakter kümesidir. Herhangi bir ek kodu kullanıma sunmaz, bu nedenle aynı kod noktaları farklı ülkelerde farklı karakterleri kodlar. Kaçış kodları, bir metin parçasına hangi ulusal varyantın uygulandığını belirtmek için tanımlandı, ancak nadiren kullanıldılar, bu nedenle hangi varyantla çalışılacağını ve dolayısıyla bir kodun hangi karakteri temsil ettiğini ve genel olarak metni temsil ettiğini bilmek genellikle imkansızdı. işleme sistemleri zaten sadece bir varyantla başa çıkabilirdi.

ASCII'nin parantez ve ayraç karakterleri, ISO/IEC 646'nın diğer ulusal türevlerinde aksanlı harfler için kullanılan "ulusal kullanım" kod noktalarına atandığından, bir Alman, Fransız veya İsveç vb. programcı, kendi ulusal ISO varyantını kullanır. /IEC 646, ASCII yerine şunun gibi bir şey yazmalı ve bu nedenle okumalıydı:

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

onun yerine

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

ANSI C için bu sorunu çözmek için C trigrafları oluşturuldu , ancak derleyicilerdeki geç girişleri ve tutarsız uygulamaları kullanımlarını sınırladı. Birçok programcı bilgisayarlarını US-ASCII'de tuttu, bu nedenle İsveççe, Almanca vb. düz metinler (örneğin, e-posta veya Usenet'te ) kelimelerin ortasında "{, }" ve benzer varyantları içeriyordu, bu programcıların sahip olduğu bir şeydi. eskiden. Örneğin, başka bir programcıya öğle yemeğine gitmeleri gerekip gerekmediğini soran bir İsveçli programcı, yanıt olarak "N{ jag har sm|rg}sar" alabilir, bu da "Nä jag har smörgåsar", yani "Hayır, elimde var" anlamına gelir. sandviçler".

Japonya ve Kore'de, 2020'lerden itibaren, ters eğik çizginin (5C hex) ¥ ( Japonya'da bir Yen işareti ) veya ₩ ( Kore'de bir Won işareti ) olarak işlendiği bir ASCII varyasyonu kullanılır . Bu, örneğin C:\Users\Smith dosya yolunun C:¥Users¥Smith (Japonya'da) veya C:₩Users₩Smith (Kore'de) olarak gösterildiği anlamına gelir.

8 bit kodlar

Sonunda, 8-, 16- ve 32-bit (ve daha sonra 64-bit ) bilgisayarlar norm olarak 12- , 18- ve 36-bit bilgisayarların yerini almaya başladıkça , her birini depolamak için 8-bit bir bayt kullanmak yaygınlaştı. ASCII'nin genişletilmiş, 8 bitlik akrabaları için bir fırsat sağlar. Çoğu durumda bunlar ASCII'nin gerçek uzantıları olarak geliştirilmiş, orijinal karakter eşlemesine dokunulmamış, ancak ilk 128 (yani 7 bit) karakterden sonra ek karakter tanımları eklenmiştir.

Kodlamalar ISCII (Hindistan), VISCII (Vietnam) içerir. Bu kodlamalara bazen ASCII olarak atıfta bulunulmasına rağmen, gerçek ASCII, yalnızca ANSI standardı tarafından kesin olarak tanımlanır.

Çoğu eski ev bilgisayar sistemi, çizgi çizme ve oyun glifleri içeren kendi 8 bitlik karakter setlerini geliştirdi ve genellikle 0'dan 31'e kadar olan kontrol karakterlerinin bir kısmını veya tamamını daha fazla grafikle doldurdu. Kaypro CP/M bilgisayarları, Yunan alfabesi için "üst" 128 karakteri kullandı.

PETSCII kodu Commodore Uluslararası onların için kullanılan 8 bitlik sistemlerde yerine daha yaygın ASCII-1967, bulunan gibi bir ASCII-1963 dayalı olması sonrası 1970 kodları arasında muhtemelen benzersizdir ZX Spectrum bilgisayara. Atari 8 bit bilgisayarlar ve Galaksija bilgisayarları da ASCII türevlerini kullandı.

Kontrol karakterlerini gülen yüzler gibi grafik sembollerle değiştiren ve ek grafik karakterlerini üst 128 konumlarına eşleyen IBM PC tanımlı kod sayfası 437 . DOS gibi işletim sistemleri bu kod sayfalarını destekledi ve IBM PC'lerin üreticileri bunları donanım olarak destekledi. Digital Equipment Corporation , popüler VT220 terminalinde kullanım için Çokuluslu Karakter Setini (DEC-MCS) blok grafiklerden çok uluslararası diller için tasarlanmış ilk uzantılardan biri olarak geliştirdi. Macintosh, Mac OS Roman'ı tanımladı ve Postscript de bir küme tanımladı; bunların her ikisi de, daha çok modern karakter kümeleri gibi, grafikler yerine hem uluslararası harfler hem de tipografik noktalama işaretleri içeriyordu.

ISO / IEC 8859 (DEC-MCS türetilmiş) standart son olarak (ancak birçok değişikliği ile, doğru olarak ASCII kopyalanan olarak en az) bir çok sistem kopyalanan bir standart olarak sağlanır. Microsoft tarafından tasarlanan bir başka popüler uzantı olan Windows-1252 (genellikle ISO-8859-1 olarak yanlış etiketlenir ), geleneksel metin yazdırma için gereken tipografik noktalama işaretlerini ekledi. ISO-8859-1, Windows-1252 ve orijinal 7-bit ASCII, UTF-8'in daha yaygın hale geldiği 2008 yılına kadar en yaygın karakter kodlamalarıydı .

ISO/IEC 4873 , 7 bitlik ASCII kodlamasını 8 bitlik bir sistem haline getirmenin bir parçası olarak 80–9F onaltılık aralıkta tanımlanan 32 ek kontrol kodunu tanıttı .

tek kod

Unicode ve ISO/IEC 10646 Evrensel Karakter Seti (UCS) çok daha geniş bir karakter dizisine sahiptir ve çeşitli kodlama biçimleri birçok ortamda hızla ISO/IEC 8859 ve ASCII'nin yerini almaya başlamıştır. ASCII 128 karakterle sınırlıyken, Unicode ve UCS, benzersiz tanımlama ( kod noktaları adı verilen doğal sayıları kullanarak ) ve kodlama ( UTF-8 adı verilen 8-, 16- veya 32-bit ikili biçimlere) kavramlarını ayırarak daha fazla karakteri destekler. , UTF-16 ve UTF-32 ).

ASCII, ilk 128 sembol olarak Unicode (1991) karakter kümesine dahil edilmiştir, bu nedenle 7 bitlik ASCII karakterleri her iki kümede de aynı sayısal kodlara sahiptir. Bu, UTF-8'in 7-bit ASCII ile geriye dönük uyumlu olmasını sağlar , çünkü yalnızca ASCII karakterleri içeren bir UTF-8 dosyası, aynı karakter dizisini içeren bir ASCII dosyasıyla aynıdır. Daha da önemlisi, yalnızca 7-bit ASCII karakterlerini özel olarak tanıyan ve en yüksek bit seti ile baytları değiştirmeyen bir yazılım olarak ileriye dönük uyumluluk sağlanır (genellikle ISO-8859-1 gibi 8-bit ASCII uzantılarını desteklemek için yapıldığı gibi) UTF-8 verilerini değişmeden koruyacaktır.

Ayrıca bakınız

Notlar

Referanslar

daha fazla okuma

Dış bağlantılar