Kontrol karakteri - Control character

Bilgi işlem ve telekomünikasyonda , bir kontrol karakteri veya yazdırılmayan karakter ( NPC ), bir karakter kümesindeki yazılı bir sembolü temsil etmeyen bir kod noktasıdır ( sayı ) . Metne bir sembol eklenmesinden başka etkilere neden olmak için bant içi sinyal olarak kullanılırlar . Diğer tüm karakterler , belki de " boşluk " karakteri (bkz. ASCII yazdırılabilir karakterleri ) dışında , çoğunlukla yazdırılabilir , yazdırılabilir veya grafik karakterlerdir .

ASCII tablosundaki kod 32'nin altındaki (teknik olarak C0 kontrol kodu seti) tüm girişler , metin satırlarını ayırmak için kullanılan CR ve LF dahil olmak üzere bu türdendir . 127 kodu ( DEL ) aynı zamanda bir kontrol karakteridir. ISO 8859 tarafından tanımlanan genişletilmiş ASCII setleri , kontrol karakterleri olarak 128'den 159'a kadar olan kodları ekledi, bu öncelikle yüksek bitin sıyrılması durumunda bir baskı karakterini bir C0 kontrol koduna değiştirmemesi için yapıldı, ancak burada bazı atamalar yapıldı, özellikle NEL . Bu ikinci kümeye C1 kümesi denir .

Bu 65 kontrol kodu Unicode'a taşındı . Unicode, kontrol olarak kabul edilebilecek daha fazla karakter ekledi, ancak bu "Biçimlendirme karakterleri" ( sıfır genişlikli olmayan marangoz gibi ) ile 65 kontrol karakteri arasında bir ayrım yapar .

Genişletilmiş ikili kodlanmış ondalık değişim kodu (EBCDIC) karakter kümesi çoğunlukla IBM çevre birimlerini kontrol etmek için kullanılır ASCII kontrol kodları artı ek kodların tüm dahil 65 kontrol kodları içerir.

0x00 0x10
0x00 NUL DLE
0x01 SOH DC1
0x02 STX DC2
0x03 ETX DC3
0x04 EOT DC4
0x05 ENQ NAK
0x06 ACK SYN
0x07 BEL ETB
0x08 BS YAPABİLMEK
0x09 HT EM
0x0A LF ALT
0x0B VT ESC
0x0C FF FS
0x0D CR GS
0x0E BU YÜZDEN RS
0x0F Biz
0x7F DEL

Tarih

Usul işaretler de Mors kodu kontrol karakterinin bir biçimidir.

1870 Baudot kodunda bir tür kontrol karakteri tanıtıldı : NUL ve DEL. 1901 Murray kodu , satır başı (CR) ve satır besleme (LF) ekledi ve Baudot kodunun diğer sürümleri diğer kontrol karakterlerini içeriyordu.

Çan karakter uyarı operatörlere bir zili çalar (BEL), aynı zamanda bir erken oldu teletip denetim karakteri.

Kontrol karakterlerine "format efektörleri" de denir.

ASCII'de

ASCII'de hala yaygın olarak kullanılan kontrol karakterleri şunları içerir:

Kontrol karakterleri , çalışan işlemi kesmek için kod 3 ( Metin Sonu karakteri , ETX, ^C) veya kod 4 ( İletim Sonu karakteri , EOT, ^D) gibi kullanıcı bunları girdiğinde bir şey yapıyor olarak tanımlanabilir. metin girişini sonlandırmak veya bir Unix kabuğundan çıkmak için kullanılır . Bu kullanımların genellikle metin çıktısı alındığında kullanımlarıyla çok az ilgisi vardır ve modern sistemlerde genellikle kod numarasının iletilmesini içermez (bunun yerine program, kullanıcının Ctrl tuşunu basılı tuttuğu gerçeğini alır) ve 'C' ile işaretlenmiş tuşa basarak).

Tanımlanmış epeyce kontrol karakteri vardı (ASCII'de 33 ve ECMA-48 standardı 32 tane daha ekler). Bunun nedeni, ilk terminallerin, her türlü durumu hatırlayan API'yi uygulamayı oldukça pahalı hale getiren çok ilkel mekanik veya elektrik kontrollerine sahip olmasıydı , bu nedenle her işlev için farklı bir kod bir gereksinim gibi görünüyordu. Bir işlevi gerçekleştirmek için kod dizilerini yorumlamak hızla mümkün ve ucuz hale geldi ve cihaz üreticileri yüzlerce cihaz talimatı göndermenin bir yolunu buldu. Spesifik olarak, ASCII kodu 27'yi (kaçış) ve ardından "kontrol dizisi" veya "kaçış dizisi" olarak adlandırılan bir dizi karakter kullandılar. Mekanizma, ASCII'nin babası Bob Bemer tarafından icat edildi . Örneğin, 27 kod dizisi ve ardından yazdırılabilir karakterler "[2;10H", bir DEC VT-102 terminalinin imlecini ekranın 2. satırının 10. hücresine taşımasına neden olur . Bu diziler için, özellikle ANSI X3.64 olmak üzere çeşitli standartlar mevcuttur . Ancak, özellikle teknolojinin herhangi bir standart kuruluşun ayak uydurabileceğinden çok daha hızlı ilerlediği yazıcılar arasında, kullanımdaki standart dışı varyasyonların sayısı fazladır.

Unicode'da

Unicode'da "Kontrol karakterleri" U+0000—U+001F (C0 kontrolleri), U+007F (sil) ve U+0080—U+009F (C1 kontrolleri) şeklindedir. Onların Genel Kategori "Cc" dir. Biçimlendirme kodları, "Cf" Genel Kategorisinde farklıdır. Cc kontrol karakterlerinin Unicode'da Adı yoktur, ancak bunun yerine "<control-001A>" gibi etiketler verilir.

Görüntülemek

İle izah edilebilir görüntüleme olmayan baskı, karakterleri girmek için bir takım teknikler vardır çan karakter olarak ASCII kodlama:

  • Kod noktası : ondalık 7, onaltılık 0x07
  • Genellikle üç büyük harften oluşan bir kısaltma: BEL
  • Kısaltmayı özetleyen özel bir karakter: Unicode U+2407 (␇), "zil sembolü"
  • Bir ISO 2047 grafik gösterimi: Unicode U+237E (⍾), "zil için grafik"
  • ASCII'de düzeltme işareti gösterimi , burada 00xxxxx kod noktası bir düzeltme işareti ve ardından 10xxxxx kod noktasında büyük harf olarak temsil edilir: ^G
  • C / C++ karakter dizisi kodlarında olduğu gibi bir kaçış dizisi : \a , \007 , \x07 , vb.

Kontrol karakterleri klavyelerle nasıl eşlenir?

ASCII tabanlı klavyelerde " Kontrol ", "Ctrl" veya (nadiren) "Cntl" etiketli bir tuş bulunur ve bu tuşlar, başka bir harf veya sembol tuşuyla birlikte basıldığında bir üst karakter tuşu gibi kullanılır. Bir uygulamada, kontrol anahtarı, birlikte basıldığı (genel olarak) büyük harf için kodun 64 basamak altında kodu oluşturur (yani, (genellikle) büyük harfin ondalık kısmında ASCII kod değerinden 64 çıkarın). Diğer uygulama, anahtar tarafından üretilen ASCII kodunu ve bitsel VE 31 ile almak, 6 ve 7 bitlerini sıfıra zorlamak. Örneğin, "kontrol" ve "g" veya "G" harfine ( sekizli olarak 107 veya taban 10'da 71 , ikili sistemde 01000111 olan) basılması , 7 kodunu (Bell, 10 tabanında 7 veya 00000111'de) üretir. ikili). NULL karakteri (kod 0) Ctrl-@ ile temsil edilir, "@" ASCII karakter kümesinde "A"dan hemen önceki koddur. Kolaylık sağlamak için, birçok terminal Ctrl-Space'i Ctrl-@ için bir takma ad olarak kabul eder. Her iki durumda da, bu, 0 ile 31 arasında 32 ASCII kontrol kodundan birini üretir. Bu yaklaşım, değeri nedeniyle (kod 127) DEL karakterini temsil edemez, ancak Ctrl-? genellikle bu karakter için, bir '?'den 64 çıkarılarak kullanılır. -1'i verir, bu 7 bit olarak maskelenirse 127'dir.

Kontrol tuşu basılı tutulduğunda, harf tuşları, shift veya büyük harf kilidi tuşlarının durumundan bağımsız olarak aynı kontrol karakterlerini üretir . Başka bir deyişle, anahtarın büyük harf mi yoksa küçük harf mi üreteceği önemli değildir. Kontrol anahtarının boşluk, grafik karakteri ve rakam tuşlarıyla (ASCII kodları 32 ila 63) yorumlanması sistemler arasında farklılık gösterir. Bazıları, kontrol tuşu basılı tutulmamış gibi aynı karakter kodunu üretecektir. Diğer sistemler, kontrol tuşu basılı tutulduğunda bu tuşları kontrol karakterlerine çevirir. Kontrol anahtarının ASCII olmayan ("yabancı") anahtarlarla yorumlanması da sistemler arasında farklılık gösterir.

Kontrol karakterleri genellikle bir düzeltme işareti (^) ve ardından kontrol karakteri artı 64 değerine sahip ASCII karakteri yazdırılarak düzeltme işareti notasyonu olarak bilinen yazdırılabilir bir forma dönüştürülür. Harf tuşları kullanılarak oluşturulan kontrol karakterleri bu nedenle büyük harfle görüntülenir. mektubun şekli. Örneğin, ^G, kontrol tuşu basılı tutulduğunda G tuşuna basılarak oluşturulan kod 7'yi temsil eder.

Klavyelerde ayrıca tipik olarak kontrol karakter kodları üreten birkaç tek tuş bulunur. Örneğin, "Geri Al" etiketli tuş tipik olarak 8 kodunu, "Sekme" kodunu 9, "Enter" veya "Return" kodunu 13 üretir (ancak bazı klavyeler "Enter" için 10 kodunu üretebilir).

Birçok klavye, örneğin imleç kontrol okları ve kelime işlem işlevleri gibi herhangi bir yazdırılabilir ASCII veya kontrol karakterine karşılık gelmeyen tuşlar içerir . İlişkili tuşa basmalar, bilgisayar programlarına dört yöntemden biriyle iletilir: aksi takdirde kullanılmayan kontrol karakterlerini tahsis etmek; ASCII dışında bazı kodlamalar kullanmak; çok karakterli kontrol dizilerinin kullanılması; veya karakter oluşturmanın dışında ek bir mekanizma kullanmak. "Aptal" bilgisayar terminalleri tipik olarak kontrol dizilerini kullanır. 1980'lerde yapılan bağımsız kişisel bilgisayarlara takılan klavyeler tipik olarak ilk iki yöntemden birini (veya her ikisini) kullanır. Modern bilgisayar klavyeleri , basılan belirli fiziksel tuşları tanımlayan tarama kodları üretir ; bilgisayar yazılımı daha sonra yukarıda açıklanan dört yöntemden herhangi biri dahil olmak üzere basılan tuşların nasıl kullanılacağını belirler.

Tasarım amacı

Kontrol karakterleri birkaç gruba ayrılacak şekilde tasarlanmıştır: yazdırma ve görüntüleme kontrolü, veri yapılandırması, iletim kontrolü ve çeşitli.

Yazdırma ve görüntüleme kontrolü

Baskı kontrol karakterleri ilk olarak, en eski çıktı aygıtı olan yazıcıların fiziksel mekanizmasını kontrol etmek için kullanıldı. Bu fikrin erken bir uygulaması, bant dışı ASA taşıma kontrol karakterleriydi . Daha sonra, kontrol karakterleri yazdırılacak veri akışına entegre edildi. Satır başı karakteri (CR), böyle bir aygıta gönderildiğinde, karakteri kağıdın yazının başladığı kenarına koymasına neden olur (yazdırma konumunu bir sonraki satıra taşıyabilir veya taşımayabilir). Satır besleme karakteri (LF/NL), aygıtın yazdırma konumunu bir sonraki satıra koymasına neden olur. Aygıta ve yapılandırmasına bağlı olarak, yazdırma konumunu bir sonraki satırın başına da taşıyabilir (veya etmeyebilir de (bu , Batı için kullanılan alfabeler gibi soldan sağa komut dosyaları için en sol konum olacaktır). diller ve İbranice ve Arap alfabeleri gibi sağdan sola yazılan yazılar için en sağdaki konum ). Dikey ve yatay sekme karakterleri (VT ve HT/TAB), çıkış cihazının yazdırma konumunu okuma yönünde bir sonraki sekme durağına taşımasına neden olur. Form besleme karakteri (FF/NP) yeni bir kağıt sayfası başlatır ve ilk satırın başına geçebilir veya gitmeyebilir. Geri al karakteri (BS), yazdırma konumunu bir karakter boşluk geriye doğru hareket ettirir. Yazıcılarda, bu en sık kullanılır, böylece yazıcı, normalde mevcut olmayan diğer karakterleri yapmak için karakterlerin üzerine yazdırabilir. Terminallerde ve diğer elektronik çıkış cihazlarında, genellikle silen bir yok edici geri alanına (yani, bir BS, SP, BS dizisi) veya silen bir tahribatsız olana izin verecek yazılım (veya donanım) konfigürasyon seçenekleri vardır. Karakterlerin kaydırılması ve kaydırılması (SI ve SO) alternatif karakter kümelerini, yazı tiplerini, alt çizgiyi veya diğer yazdırma modlarını seçti. Kaçış dizileri genellikle aynı şeyi yapmak için kullanıldı.

Kağıt üzerine fiziksel olarak baskı yapmayan ve böylece ekran yerleştirme, silme ve benzeri konularda daha fazla esneklik sunan bilgisayar terminallerinin ortaya çıkmasıyla birlikte , baskı kontrol kodları uyarlandı. Örneğin, form beslemeleri genellikle ekranı temizler, taşınacak yeni kağıt sayfası yoktur. Yeni terminallerin ve aslında daha yeni yazıcıların esnekliğinden yararlanmak için daha karmaşık kaçış dizileri geliştirildi. Kontrol karakteri kavramı her zaman biraz sınırlayıcı olmuştur ve yeni, çok daha esnek donanımlarla kullanıldığında aşırı derecede sınırlayıcı olmuştur. Kontrol dizileri (bazen kaçış dizileri olarak uygulanır) yeni esneklik ve güçle eşleşebilir ve standart yöntem haline gelebilir. Bununla birlikte, aralarından seçim yapabileceğiniz çok çeşitli standart diziler vardı ve kaldı.

Veri yapılandırma

Ayırıcılar (Dosya, Grup, Kayıt ve Birim: FS, GS, RS ve US), delikli kartları simüle etmek için verileri genellikle bir bant üzerinde yapılandırmak için yapılmıştır . Ortam sonu (EM), bandın (veya diğer kayıt ortamının) bitmekte olduğu konusunda uyarır. Birçok sistem verileri yapılandırmak için CR/LF ve TAB kullanırken, yapılandırılması gereken verilerde ayırıcı kontrol karakterleriyle karşılaşmak mümkündür. Ayırıcı kontrol karakterleri aşırı yüklenmez; verileri yapılandırılmış gruplara ayırmak dışında bunların genel bir kullanımı yoktur. Sayısal değerleri, grubun bir üyesi olarak kabul edilebilecek boşluk karakteri ile kelime ayırıcı olarak bitişiktir.

İletim kontrolü

İletim kontrol karakterlerinin bir veri akışını yapılandırması ve iletim hataları karşısında gerektiğinde yeniden iletimi veya hassas başarısızlığı yönetmesi amaçlandı.

Başlık (SOH) karakterinin başlangıcı, bir veri akışının veri olmayan bir bölümünü işaretlemekti - bir akışın adresleri ve diğer temizlik verilerini içeren kısmı. Metin karakterinin başlangıcı (STX), başlığın sonunu ve bir akışın metinsel bölümünün başlangıcını işaretler. Metin sonu karakteri (ETX), bir mesaj verisinin sonunu işaretler. Yaygın olarak kullanılan bir kural, ETX'ten önceki iki karakteri , hata algılama amacıyla bir sağlama toplamı veya CRC yapmaktır . İletim bloğu karakterinin sonu (ETB), verilerin iletim amacıyla bu tür bloklara bölündüğü bir veri bloğunun sonunu belirtmek için kullanıldı.

Kaçış karakterinin ( ESC ) bir sonraki karakteri "alıntılaması" amaçlanmıştır, eğer başka bir kontrol karakteri olsaydı, kontrol işlevini yerine getirmek yerine onu yazdırırdı. Günümüzde bu amaçla neredeyse hiç kullanılmamaktadır. Bağlama bağlı olarak, çeşitli yazdırılabilir karakterler, görünür " kaçış karakterleri " olarak kullanılır .

Yedek karakterin ( SUB ), genellikle bit 5'i sıfıra ayarlayarak, bir sonraki karakterin yazdırılabilir bir karakterden başka bir değere çevrilmesini istemesi amaçlanmıştır. Bu kullanışlıdır çünkü bazı ortamlar (daktilolar tarafından üretilen kağıt sayfaları gibi) yalnızca yazdırılabilir karakterleri iletebilir. Ancak, dosyaları metin modunda açılan MS-DOS sistemlerinde, "metnin sonu" veya "dosyanın sonu", diğer cihazlarda yaygın olan Ctrl-C veya Ctrl-D yerine bu Ctrl-Z karakteriyle işaretlenir. işletim sistemleri.

İptal karakteri ( CAN ), önceki öğenin atılması gerektiğinin sinyalini verdi. Negatif alındı karakteri ( NAK ), genellikle alımın bir sorun olduğunu ve çoğu zaman mevcut öğenin tekrar gönderilmesi gerektiğini belirten kesin bir işarettir. Kabul karakteri ( ACK ) normalde mevcut elemanla ilgili herhangi bir problem tespit edilmediğini belirtmek için bir bayrak olarak kullanılır.

Bir iletim ortamı yarı çift yönlü olduğunda (yani, aynı anda yalnızca bir yönde iletim yapabilir), genellikle herhangi bir zamanda iletim yapabilen bir ana istasyon ve izinleri olduğunda iletim yapan bir veya daha fazla bağımlı istasyon vardır. Sorgu karakteri ( ENQ ) genellikle bir ana istasyon tarafından bir bağımlı istasyondan bir sonraki mesajını göndermesini istemek için kullanılır. Bir bağımlı istasyon, iletimin sonu karakterini ( EOT ) göndererek iletimini tamamladığını belirtir .

Cihaz kontrol kodları (DC1'den DC4'e) orijinal olarak geneldi ve her cihaz tarafından gerektiği şekilde uygulandı. Bununla birlikte, veri iletiminde evrensel bir ihtiyaç, bir alıcı geçici olarak daha fazla veri kabul edemediğinde göndericiden iletimi durdurmasını istemektir. Digital Equipment Corporation, 19'u ( aynı zamanda kontrol-S veya XOFF olarak da bilinen cihaz kontrolü 3 karakteri ( DC3 ) ) "S" üst iletimine ve 17'yi (cihaz kontrolü 1 karakteri ( DC1 ), diğer adıyla kontrol) kullanan bir kural icat etti. -Q veya XON ) iletmeyi başlatmak için. O kadar yaygın bir şekilde kullanılmaya başlandı ki çoğu kişi bunun resmi ASCII'nin bir parçası olmadığının farkında değil. Ancak uygulanan bu teknik, veri kablosunda yalnızca iletim yönetimine ayrılmış ek kablolardan kaçınarak para tasarrufu sağlar. Bununla birlikte, olası kilitlenme durumlarından kaçınmak için, bu tür iletim akış kontrol sinyallerinin kullanımı için mantıklı bir protokol kullanılmalıdır.

Veri bağlantısı kaçış karakterinin ( DLE ), bir veri bağlantısının diğer ucuna, aşağıdaki karakterin STX veya ETX gibi bir kontrol karakteri olduğuna dair bir sinyal olması amaçlanmıştır. Örneğin bir paket şu şekilde yapılandırılabilir ( DLE ) <STX> <PAYLOAD> ( DLE ) <ETX>.

Çeşitli kodlar

Kod 7 ( BEL ), alıcı terminalde sesli bir sinyale neden olmak için tasarlanmıştır.

ASCII kontrol karakterlerinin çoğu, günümüzde sıklıkla görülmeyen zamanın cihazları için tasarlanmıştır. Örneğin, kod 22, "senkronize boşta" ( SYN ), orijinal olarak gönderilecek gerçek veri olmadığında senkronize modemler (sürekli veri göndermesi gereken) tarafından gönderildi. (Modern sistemler tipik olarak iletilen bir kelimenin başlangıcını duyurmak için bir başlangıç ​​biti kullanır - bu, asenkron iletişimin bir özelliğidir . Senkron iletişim bağlantıları, anabilgisayarlarda daha sık görülürdü, burada genellikle bir anabilgisayarı diğerine bağlamak için kurumsal kiralık hatlar üzerinden çalıştırılırlardı. ana bilgisayar veya belki bir mini bilgisayar.)

Kod 0 (ASCII kod adı NUL ) özel bir durumdur. Kağıt bantta, delik olmadığı durumdur. Bunu, başka bir anlamı olmayan bir dolgu karakteri olarak ele almak uygundur . Bir NUL karakterinin konumunda delinmiş delik olmadığından, daha sonra başka herhangi bir karakterle değiştirilebilir, bu nedenle tipik olarak, ya hataları düzeltmek ya da daha sonra kullanılabilecek bilgileri eklemek için yer ayırmak için kullanılırdı. veya başka bir yerde. Hesaplamada genellikle sabit uzunluklu kayıtlarda dolgu yapmak ve daha yaygın olarak bir dizenin sonunu işaretlemek için kullanılır.

Kod 127 ( DEL , diğer adıyla "rutubet") de aynı şekilde özel bir durumdur. 7 bitlik kodu, ikili olarak tamamen açık olup, fazla delindiğinde kağıt bant üzerindeki bir karakter hücresini esasen silmiştir . Kağıt bant, ASCII geliştirildiğinde yaygın bir depolama ortamıydı ve Biuro Szyfrów'daki İkinci Dünya Savaşı kod kırma ekipmanına kadar uzanan bir bilgi işlem geçmişi vardı . Kağıt bant 1970'lerde modası geçmiş oldu, bu nedenle ASCII'nin bu akıllı yönü bundan sonra nadiren herhangi bir kullanım gördü. Bazı sistemler (orijinal Elmalar gibi) onu bir geri alma alanına dönüştürdü. Ancak kodu, diğer yazdırılabilir karakterlerin kapladığı aralıkta olduğundan ve resmi olarak atanmış bir glif içermediğinden, birçok bilgisayar ekipmanı satıcısı bunu ek yazdırılabilir bir karakter olarak kullandı (genellikle üst baskı yoluyla metni silmek için kullanışlı, tamamen siyah bir "kutu" karakteri). mürekkeple).

Silinemez programlanabilir ROM'lar tipik olarak, her biri bir biti temsil eden ve genellikle birden sıfıra kadar yalnızca bir şekilde değiştirilebilen eriyebilir eleman dizileri olarak uygulanır . Bu tür PROM'larda, DEL ve NUL karakterleri, delikli bantta kullanıldıkları şekilde kullanılabilir: biri daha sonra yazılabilecek anlamsız doldurma baytlarını ayırmak için, diğeri ise yazılı baytları anlamsız doldurma baytlarına dönüştürmek için. Birden sıfıra değişen PROM'lar için NUL ve DEL'in rolleri tersine çevrilir; ayrıca DEL yalnızca bugün nadiren kullanılan 7 bitlik karakterlerle çalışacaktır; 8 bitlik içerik için, genellikle bölünmez boşluk karakteri olarak tanımlanan karakter kodu 255, DEL yerine kullanılabilir.

Birçok dosya sistemi , ayrılmış işlevlere sahip olabileceğinden, dosya adlarında kontrol karakterlerine izin vermez .

Ayrıca bakınız

Notlar ve referanslar

Dış bağlantılar