Skip to content

Glossary

ASCII

Özgün 7 bitlik karakter kodlaması

By Published Updated

ASCII (Amerikan Standart Bilgi Değişim Kodu, "ass-key" diye okunur), 128 sembolü 0-127 arasındaki tam sayılara eşleyen bir karakter kodlamasıdır. 1963'te tanımlanmış, 1972'de uluslararası standart ISO/IEC 646 olarak kabul edilmiştir.

Kapsam:

  • 0-31: kontrol karakterleri (NUL, yeni satır, satır başı, sekme, kaçış, zil)
  • 32-47: noktalama ve semboller (boşluk, !, ", #, $, %, vb.)
  • 48-57: 0-9 rakamları
  • 58-64: ek noktalama işaretleri (:, ;, <, =, >, ?, @)
  • 65-90: büyük harf A-Z
  • 97-122: küçük harf a-z
  • 127: SİL (DEL)

ASCII 7 bite sığar; bu yüzden eski seri protokoller ve telgraf sistemleri 7 bitlik iletim kullandı. 8. bit eşlik biti oldu. Modern sistemler karakter başına 8 bit kullanır; üst 128 değer (128-255), seçilen kodlamaya bağlı olarak farklı yorumlanır (Latin-1, Windows-1252 vb.).

UTF-8, ASCII ile geriye dönük uyumludur — her ASCII metni, aynı baytlarla geçerli bir UTF-8 dosyasıdır. Bu uyumluluk, Unicode kodlama savaşlarında UTF-8'in neden galip geldiğinin başlıca nedenlerinden biridir.

Çalışılmış örnek

“Hi!” dizisi ASCII ile kodlandığında üç bayttır: H = 72 (0x48), i = 105 (0x69), ! = 33 (0x21). İkili olarak: 01001000 01101001 00100001. Her baytın en yüksek bitinin sıfır olduğuna dikkat edin — bu, 7 bitlik garantidir. Aynı dize UTF-16'da: 0048 0069 0021 — başta bir BOM ile küçük endian bayt sıralaması eklenmiş halde aynı içerik için altı bayt. UTF-8'de ise: her karakter 0-127 aralığında olduğundan ASCII ile aynıdır. Şimdi “café” deneyin: ASCII, é harfini (Unicode U+00E9) kodlayamaz; kodlayıcı ya hata verir ya da soru işaretiyle değiştirir. UTF-8, é'yi iki bayt olarak 0xC3 0xA9 şeklinde kodlar; Latin-1 ise tek bayt 0xE9 olarak kodlar. Aynı görsel karakter, kodlama seçimine bağlı olarak üç farklı bayt dizisi.

İngilizce dışı metin için ASCII'nin tamamlayıcısı Unicode'dur; her karaktere bir kod noktası atar ve bunları bayt olarak seri hale getirmek için kodlamalar (UTF-8, UTF-16, UTF-32) kullanır. UTF-8, 1992'de Ken Thompson ve Rob Pike tarafından ASCII uyumlu olacak şekilde özel olarak tasarlandı: yalnızca ASCII karakterleri içeren her dosya, ASCII ve UTF-8'de aynıdır; bu yüzden neredeyse tüm İngilizce protokoller ve yapılandırma biçimleri, kırılma olmadan Unicode'a yükseltilebildi.

Ne zaman ve neden önemlidir

ASCII, kodlama hatalarını ayıklarken, hat protokolleri tasarlarken veya metni bayt bayt işleyen herhangi bir sistemde çalışırken önemlidir. é harfini “cé”, “cé” veya “c?” olarak gönderen hata her zaman bir ASCII/UTF-8/Latin-1 uyumsuzluğudur — ardışık düzende bir yerde baytlar yanlış bir varsayımla çözümlenmiştir. Dizeleri bayt olarak işleyen sıralama algoritmaları, ASCII sıralaması nedeniyle büyük harfleri küçük harflerden önce sıralar — ham baytları sıralarsanız “Zebra”, “apple”'dan önce gelir; bu, büyük/küçük harf duyarsız sözlük sıralaması bekleyen kullanıcıları şaşırtır. Programlama dillerindeki tanımlayıcı kuralları (değişken adları, JSON anahtarları), varsayılan kodlamanın bilinmediği sistemler arasında taşınabilirlik için genellikle ASCII ile sınırlıdır. Bir CSV biçimi, günlük dosyası biçimi veya metin tabanlı hat protokolü tasarlayan herkes, ASCII ardışık düzeninde değişmeden neyin geçtiğini ve neyin bozulduğunu bilmekten fayda sağlar. Referans: RFC 20 — Ağ Değişimi için ASCII Biçimi.

Alfabe sıralaması neden önemlidir: ASCII, büyük harfleri (65-90) kasıtlı olarak küçük harflerin (97-122) önüne yerleştirdi ve ikisi arasında sabit 32 fark bıraktı. Herhangi bir harf baytının 5. bitini (0x20 biti) ayarlamak veya temizlemek, büyük-küçük harf arasında geçiş yapar. Bu bit numarası, eski C dize kitaplığının tolower()'ı tek bir aritmetik işlemle yapabilmesinin nedenidir ve bu durum, büyük/küçük harf duyarsız olmakla birlikte tam olarak bu bit çevirme eşdeğerliğine dayanan sayısız protokole (HTTP başlık adları, DNS etiketleri) işlenmiştir. Unicode geldiği anda bu numara işe yaramaz: Türkçe noktalı/noktasız I bunun kanonik karşı örneğidir.

Kimsenin vazgeçemediği kontrol karakteri mirası: 0-31 aralığı, hiçbir modern sistemin kullanmadığı ancak her ayrıştırıcının tanımak zorunda olduğu teletype donanımı kalıntılarını taşır. NUL (0), C dizelerini sonlandırır; LF (10) ve CR (13) satırları böler (Unix LF, Windows CRLF, eski Mac OS yalnızca CR kullanır); HT (9) sekme karakteridir; ESC (27) ANSI terminal kaçış dizilerini başlatır. Zil karakteri (7) bir zamanlar Teletype Model 33 terminallerinde fiziksel bir zil çalardı; bugün çoğu işletim sisteminde sistem sesi API'sini tetikler. Bunların hiçbiri bugün yeniden tasarlanamaz — yarım yüzyıllık dosya biçimleri ve hat protokolleri bunları beklediğinden hayatta kalmaya devam ederler. Referans: ISO/IEC 646 — Bilgi teknolojisi — ISO 7 bitlik kodlu karakter seti.

Frequently asked questions

ASCII nedir?
ASCII (Amerikan Standart Bilgi Değişim Kodu), 128 değeri (0-127) harflere, rakamlara, noktalama işaretlerine ve kontrol karakterlerine eşleyen 7 bitlik bir karakter kodlamasıdır. 1963'te standartlaştırılmış olup tüm modern metin kodlamalarının temeli olmaya devam etmektedir.
ASCII pratikte nasıl kullanılır?
Genişletilmiş karakterler içermeyen İngilizce metin dosyaları, URL'ler veya HTTP başlıkları geçerli ASCII'dir. SMTP gibi e-posta protokolleri başlangıçta yalnızca ASCII'ydi; bu nedenle ASCII dışı e-posta konu satırlarının Base64 veya alıntılanabilir yazdırma ile kodlanması gerekir.
ASCII ile UTF-8 arasındaki fark nedir?
UTF-8, ASCII'nin bir üst kümesidir: UTF-8'in ilk 128 kod noktası ASCII ile özdeştir ve tek bayt olarak kodlanır. UTF-8, ASCII'nin 127'de durduğu yerde 2-4 bayt kullanarak 1,1 milyonun üzerinde Unicode kod noktasını kapsayacak şekilde genişler.
ASCII neden 8 bit yerine 7 bit kullanır?
1963 komitesi, 8. biti seri hatlar üzerindeki eşlik hata denetimi için ayırdı. Bu, 128 slota — İngiliz alfabesi, rakamlar, noktalama işaretleri ve kontrol karakterleri için yeterli — yer bıraktı. 8. bit daha sonra ISO-8859-1 gibi rakip genişletilmiş kodlamalar tarafından kullanıldı.

Related

Published May 14, 2026 · Last reviewed May 31, 2026