Skip to content

ASCII Tablosu ve Dönüştürücü

Tam ASCII tablosu: 128 karakterin ondalık, onaltılık, sekizlik ve ikilik karşılıkları, artı çift yönlü metin–ASCII dönüştürücü. Kontrol karakterleri kaçış dizileri, şapka gösterimi ve nerede karşınıza çıktıklarıyla birlikte.

Takip Yok Tarayıcıda Çalışır Ücretsiz

Her şey tarayıcınızda çalışır — girdiğiniz veri asla yüklenmez, günlüklenmez ya da saklanmaz.

Metin ve ASCII kodu, iki yönlü

Eksiksiz ASCII tablosu (0–127)

128 / 128
Ondalık Onaltılık Sekizlik İkilik Karakter Ad Kaçış Şapka HTML Nerede karşılaşırsınız
0 00 000 00000000 NUL Null \0 ^@ � C dizgi sonlandırıcısı; find -print0 ve xargs -0 içinde dosya adlarını ayırır; grep'in „Binary file matches" demesine yol açar.
1 01 001 00000001 SOH Start of Heading ^A  FIX protokolü bunu alan ayırıcı olarak kullanır; FIX mesajlarının tek bir uzun satır gibi görünmesinin nedeni budur.
2 02 002 00000010 STX Start of Text ^B  Seri port, POS ve barkod okuyucu protokollerinde çerçeve başlığı; tmux'un ön ek tuşu Ctrl+B.
3 03 003 00000011 ETX End of Text ^C  Ctrl+C bu baytı gönderir; tty satır disiplini onu SIGINT'e çevirir, dolayısıyla programınız baytı hiç görmez.
4 04 004 00000100 EOT End of Transmission ^D  Ctrl+D o anki girdi satırını teslim eder; satır boşsa read 0 bayt döner ve asıl EOF budur.
5 05 005 00000101 ENQ Enquiry ^E  Eski bağlantı el sıkışmaları; kimi terminaller buna bir kimlik dizgisiyle yanıt verir.
6 06 006 00000110 ACK Acknowledge ^F  Eski bağlantı katmanı protokollerinde ENQ ve NAK ile eşleşir; endüstriyel seri donanımda hâlâ görülür.
7 07 007 00000111 BEL Bell \a ^G  printf '\a' zili çalar; günümüzde daha sık olarak pencere başlığı ayarlamak gibi bir OSC dizisini sonlandırır.
8 08 010 00001000 BS Backspace \b ^H  İlerleme çubuklarında geri silme. Çoğu terminalin Backspace için bu baytı değil 0x7F'yi gönderdiğine dikkat edin.
9 09 011 00001001 HT Character Tabulation \t ^I 	 Makefile tarifleri gerçek bir TAB ile başlamak zorundadır; gofmt TAB ile girinti verir; Tab tuşu ile Ctrl+I aynı bayttır.
10 0A 012 00001010 LF Line Feed \n ^J 
 Unix ve macOS'ta satır sonu; git'in core.autocrlf ayarı bununla CRLF arasında dönüşüm yapar.
11 0B 013 00001011 VT Line Tabulation \v ^K  Neredeyse yok oldu ama hâlâ satır sonu sayılır: splitlines() burada böler, split("\n") bölmez.
12 0C 014 00001100 FF Form Feed \f ^L  Yazıcıda sayfa atlatma; Ctrl+L terminali temizler; Emacs bunu kaynak dosyalarda bölüm işareti olarak kullanır.
13 0D 015 00001101 CR Carriage Return \r ^M 
 Windows CRLF'sinin ilk yarısı; git diff içinde ^M olarak görünür; „bad interpreter: /bin/bash^M" hatasına yol açar.
14 0E 016 00001110 SO Shift Out ^N  ISO 2022 içinde G1 alternatif karakter kümesine geçirir; EBCDIC anasistemlerde çift baytlı bölgeleri sarar.
15 0F 017 00001111 SI Shift In ^O  SO ile eşleşerek G0 varsayılan karakter kümesine geri döner.
16 10 020 00010000 DLE Data Link Escape ^P  Eski ikili protokollerde bayt doldurma için kaçış ön eki.
17 11 021 00010001 DC1 Device Control One ^Q  XON — yazılımsal akış denetiminde sürdürme; Ctrl+Q terminal çıktısını çözer.
18 12 022 00010010 DC2 Device Control Two ^R  Modern sabit bir anlamı yok. Kabuktaki Ctrl+R bir readline tuş atamasıdır, bu kodla ilgisi yoktur.
19 13 023 00010011 DC3 Device Control Three ^S  XOFF — yazılımsal akış denetiminde duraklatma. Yanlışlıkla Ctrl+S'ye basmak „donmuş" terminalin olağan nedenidir.
20 14 024 00010100 DC4 Device Control Four ^T  Modern sabit bir anlamı yok; BSD ve macOS'ta Ctrl+T tty durum tuşudur.
21 15 025 00010101 NAK Negative Acknowledge ^U  Ctrl+U tüm satırı siler — bu tty'nin kill ayarıdır, bu kodun özgün anlamı değil.
22 16 026 00010110 SYN Synchronous Idle ^V  Ctrl+V lnext'tir: önce ona, sonra Tab'a basarsanız bash içinde tamamlamayı tetiklemeden gerçek bir TAB yazarsınız.
23 17 027 00010111 ETB End of Transmission Block ^W  Ctrl+W önceki sözcüğü siler — tty'nin werase ayarı.
24 18 030 00011000 CAN Cancel ^X  ECMA-48 bunu tamamlanmamış bir denetim dizisini iptal etmek için kullanır; terminaller ayrıştırdıkları diziyi atar.
25 19 031 00011001 EM End of Medium ^Y  Bugün pek kullanılmaz; BSD ve macOS'ta Ctrl+Y gecikmeli askıya almadır.
26 1A 032 00011010 SUB Substitute ^Z  CP/M ve DOS metin dosyalarında dosya sonu işareti; Windows konsolunun girdiyi Ctrl+Z ile bitirmesinin nedeni budur.
27 1B 033 00011011 ESC Escape ^[  Her ANSI kaçış dizisinin başlangıcı: \033[0m rengi sıfırlar, \033[2J ekranı temizler. Ctrl+[ de bunu gönderir.
28 1C 034 00011100 FS File Separator ^\  HL7 v2'nin MLLP çerçevelemesi bunu blok sonlandırıcı olarak kullanır; Ctrl+\ SIGQUIT gönderir.
29 1D 035 00011101 GS Group Separator ^]  GS1 barkodlarında FNC1 ayırıcısı bu bayttır — okuyucunuzun ürettiği görünmez ayırıcı.
30 1E 036 00011110 RS Record Separator ^^  RFC 7464 JSON Metin Dizileri her kaydın başına bunu koyar. Hayatta kalan birkaç modern kullanımdan biri.
31 1F 037 00011111 US Unit Separator ^_  Yapılandırılmış metinde alan ayırıcı; virgülden güvenlidir çünkü veri içinde neredeyse hiç geçmez.
32 20 040 00100000 Space  
33 21 041 00100001 Exclamation Mark !
34 22 042 00100010 Quotation Mark "
35 23 043 00100011 Number Sign #
36 24 044 00100100 Dollar Sign $
37 25 045 00100101 Percent Sign %
38 26 046 00100110 Ampersand &
39 27 047 00100111 Apostrophe '
40 28 050 00101000 Left Parenthesis (
41 29 051 00101001 Right Parenthesis )
42 2A 052 00101010 Asterisk *
43 2B 053 00101011 Plus Sign +
44 2C 054 00101100 Comma ,
45 2D 055 00101101 Hyphen-Minus -
46 2E 056 00101110 Full Stop .
47 2F 057 00101111 Solidus /
48 30 060 00110000 Digit Zero 0
49 31 061 00110001 Digit One 1
50 32 062 00110010 Digit Two 2
51 33 063 00110011 Digit Three 3
52 34 064 00110100 Digit Four 4
53 35 065 00110101 Digit Five 5
54 36 066 00110110 Digit Six 6
55 37 067 00110111 Digit Seven 7
56 38 070 00111000 Digit Eight 8
57 39 071 00111001 Digit Nine 9
58 3A 072 00111010 Colon :
59 3B 073 00111011 Semicolon &#59;
60 3C 074 00111100 Less-Than Sign <
61 3D 075 00111101 Equals Sign =
62 3E 076 00111110 Greater-Than Sign >
63 3F 077 00111111 Question Mark ?
64 40 100 01000000 Commercial At @
65 41 101 01000001 Latin Capital Letter A A
66 42 102 01000010 Latin Capital Letter B B
67 43 103 01000011 Latin Capital Letter C C
68 44 104 01000100 Latin Capital Letter D D
69 45 105 01000101 Latin Capital Letter E E
70 46 106 01000110 Latin Capital Letter F F
71 47 107 01000111 Latin Capital Letter G G
72 48 110 01001000 Latin Capital Letter H H
73 49 111 01001001 Latin Capital Letter I I
74 4A 112 01001010 Latin Capital Letter J J
75 4B 113 01001011 Latin Capital Letter K K
76 4C 114 01001100 Latin Capital Letter L L
77 4D 115 01001101 Latin Capital Letter M M
78 4E 116 01001110 Latin Capital Letter N N
79 4F 117 01001111 Latin Capital Letter O O
80 50 120 01010000 Latin Capital Letter P P
81 51 121 01010001 Latin Capital Letter Q Q
82 52 122 01010010 Latin Capital Letter R R
83 53 123 01010011 Latin Capital Letter S S
84 54 124 01010100 Latin Capital Letter T T
85 55 125 01010101 Latin Capital Letter U U
86 56 126 01010110 Latin Capital Letter V V
87 57 127 01010111 Latin Capital Letter W W
88 58 130 01011000 Latin Capital Letter X X
89 59 131 01011001 Latin Capital Letter Y Y
90 5A 132 01011010 Latin Capital Letter Z Z
91 5B 133 01011011 Left Square Bracket [
92 5C 134 01011100 Reverse Solidus \
93 5D 135 01011101 Right Square Bracket ]
94 5E 136 01011110 Circumflex Accent ^
95 5F 137 01011111 Low Line _
96 60 140 01100000 Grave Accent `
97 61 141 01100001 Latin Small Letter A a
98 62 142 01100010 Latin Small Letter B b
99 63 143 01100011 Latin Small Letter C c
100 64 144 01100100 Latin Small Letter D d
101 65 145 01100101 Latin Small Letter E e
102 66 146 01100110 Latin Small Letter F f
103 67 147 01100111 Latin Small Letter G g
104 68 150 01101000 Latin Small Letter H h
105 69 151 01101001 Latin Small Letter I i
106 6A 152 01101010 Latin Small Letter J j
107 6B 153 01101011 Latin Small Letter K k
108 6C 154 01101100 Latin Small Letter L l
109 6D 155 01101101 Latin Small Letter M m
110 6E 156 01101110 Latin Small Letter N n
111 6F 157 01101111 Latin Small Letter O o
112 70 160 01110000 Latin Small Letter P p
113 71 161 01110001 Latin Small Letter Q q
114 72 162 01110010 Latin Small Letter R r
115 73 163 01110011 Latin Small Letter S s
116 74 164 01110100 Latin Small Letter T t
117 75 165 01110101 Latin Small Letter U u
118 76 166 01110110 Latin Small Letter V v
119 77 167 01110111 Latin Small Letter W w
120 78 170 01111000 Latin Small Letter X x
121 79 171 01111001 Latin Small Letter Y y
122 7A 172 01111010 Latin Small Letter Z z
123 7B 173 01111011 Left Curly Bracket {
124 7C 174 01111100 Vertical Line |
125 7D 175 01111101 Right Curly Bracket }
126 7E 176 01111110 Tilde ~
127 7F 177 01111111 DEL Delete ^?  Çoğu terminalde Backspace tuşunuzun gerçekte gönderdiği bayt. Adı delikli şeritten gelir: yedi deliğin hepsi delinmiş.

İkilik sütun okunaklı olsun diye 8 bite tamamlanmıştır. ASCII'nin kendisi 7 bitlik bir koddur — en üst bit her zaman 0'dır ve UTF-8'in onunla geriye dönük uyumlu kalmasını sağlayan tam olarak budur.

Peki 128–255 ne olacak?

ASCII 128–255 aralığını hiç tanımlamaz. „Genişletilmiş ASCII" herhangi bir standardın adı değildir — bir dizi 8 bitlik kodlama için kullanılan gevşek bir tabirdir. Aynı bayt her birinde başka bir karakterdir:

Bayt ISO-8859-1 Windows-1252 CP437 CP866
0x80 U+0080 C1 kontrol karakteri (görünmez) Ç А
0x93 U+0093 C1 kontrol karakteri (görünmez) ô У
0xB0 ° °
0xE9 é é Θ щ
0xFF ÿ ÿ U+00A0 U+00A0
Karakter sınıflandırmaları test aşamasında Unicode'un kendi kategorileriyle çapraz denetlenir, Windows-1252 eşlemesi ise platform çözücüsüne karşı bayt bayt doğrulanır. — Go-Tools Mühendislik · Sep 2, 2026

Tablodaki her değer, hem sunucunun hem tarayıcının çalıştırdığı tek bir motordan üretilir; böylece bir tarayıcı botunun okuduğu ile sizin etkileşime girdiğiniz şey birbirinden ayrışamaz. Diller arasındaki kaçış farkları ise hafızadan aktarılmadı, her dilde kod derlenip çalıştırılarak doğrulandı.

Hızlı başvuru

A harfinin ASCII kodu nedir?

A = 65 Büyük `A` ondalıkta 65, onaltılıkta `0x41`, sekizlikte `101`, ikilikte `01000001`'dir. Küçük `a` ise 97 — tam 32 fazlası, yani tek bir bit.

ASCII'nin kaç karakteri var?

128 0'dan 127'ye numaralanmış 128 karakter. Bunun 32'si kontrol karakteri, boşluk dahil 95'i grafik karakter, biri de DEL'dir.

ASCII 0 nedir?

0 = NUL NUL, yani boş karakter. C'de dizgileri sonlandırır, `find -print0` içinde dosya adlarını ayırır ve `grep`'in bir dosyayı ikili saymasına yol açar.

Satır sonu hangi bayttır?

LF = 10, CR = 13 Satır ilerletme 10'dur (`0x0A`, `\n`). Satır başı 13'tür (`0x0D`, `\r`). Windows satır sonları ikisi birdendir, önce CR gelir.

ASCII nedir?

ASCII 7 bitlik bir karakter kodlamasıdır — 0'dan 127'ye numaralanmış 128 kod noktası, fazlası yok. İlk kez ASA X3.4-1963 olarak yayımlandı, güncel biçimi ANSI X3.4-1986'dır; RFC 20 internette kullanımını tarif eder ve 2015'te STD 80 numaralı İnternet Standardı düzeyine yükseltilmiştir. İlk sürümde küçük harfler hiç yoktu; küçük harfler 1967 revizyonuyla geldi. 127'nin üstündeki her şey ASCII'ye değil, başka bir kodlamaya aittir.

0x00-0x1F   32 C0 control characters
0x20         1 space (a graphic character, not a control)
0x21-0x7E   94 printable graphic characters
0x7F         1 DEL (a control character, but not part of C0)
            ---
            128 total

Bu tablo size ne veriyor

Dört taban yan yana

128 kod noktasının her biri için ondalık, onaltılık, sekizlik ve 8 bitlik ikilik gösterim; baştaki sıfır da size ASCII'nin aslında 7 bitlik olduğunu hatırlatır.

Dile göre kaçış dizileri

\0 \a \b \t \n \v \f \r sütunu ve yanında gerçekten derlemeyi bozan farklar — JavaScript'te \a yok, Java'da ne \a ne \v var, \e ise ISO C değil bir GNU uzantısı.

Şapka gösterimi

^@ ile ^? arasındaki sütun ve 33 kontrol karakterinin tamamını kapsayan tek kural: baytı 0x40 ile XOR'layın. Toplama değil, çıkarma değil — XOR.

Her kontrol karakteriyle gerçekte nerede karşılaşırsınız

Yalnızca „SOH — başlık başlangıcı" değil; FIX protokolü mesajlarının onu alan ayırıcı olarak kullandığı, 0x1D baytının barkod okuyucunuzun ürettiği görünmez ayırıcı olduğu, terminalinizi donduran Ctrl+S tuşunun XOFF olduğu.

Tahmin yürütmeyi reddeden bir dönüştürücü

Tabanı siz seçersiniz. 127'nin üstündeki baytlar, ASCII diye yutturulmak yerine Windows-1252 ve ISO-8859-1 içinde nasıl okunacaklarına dair bir notla reddedilir.

Kontrol karakterleri görünür kalır

NUL, TAB ve CR'nin çizimi yoktur; bu yüzden önizleme onları Unicode Control Pictures olarak gösterir. Kopyala düğmesi yine de size gerçek baytları verir.

İlgili kodlamalar

ISO/IEC 8859-1 (Latin-1)

8 bit, tek bayt

0–127 aralığını ASCII ile birebir aynı tutar ve 0xA0 ile 0xFF arasında 96 grafik karakter tanımlar. 0x800x9F aralığı görünmez C1 kontrol karakterlerine bırakılmıştır.

Windows-1252

8 bit, tek bayt

ISO-8859-1'in bir üst kümesi; tek farkı 0x800x9F aralığında 27 yazdırılabilir karakter koyup 5 konumu tanımsız bırakmasıdır. Bir sayfa ISO-8859-1 olduğunu söylediğinde tarayıcılar bunu kullanır.

CP437

8 bit, tek bayt

Özgün IBM PC kod sayfası. Üst yarısı aksanlı harfler, Yunan harfleri ve çerçeve çizim karakterleridir — 256 ASCII karakteri vaat eden yazılarda gördüğünüz tablolar bunlardır.

UTF-8

Değişken, 1–4 bayt

Her ASCII baytını bayt bayt aynı tutarken Unicode'un tamamını kodlar. US-ASCII ile geriye dönük uyumludur, ama yukarıdaki 8 bitlik kod sayfalarının hiçbiriyle uyumlu değildir.

Örnekler

Metinden ondalık kodlara

Hello
72 101 108 108 111

Her karakter kendi ondalık kod noktasına dönüşür. Büyük harfler 65–90, küçük harfler 97–122 arasındadır — tam 32 fark eder, beşinci biti çevirmenin harf durumunu değiştirmesinin nedeni budur.

Aynı kodlar, iki farklı tabanda

41 42 43
onaltılık -> ABC     ondalık -> )*+

Dönüştürücünün tabanı sizin yerinize asla tahmin etmemesinin nedeni tam olarak budur. İki okuma da geçerlidir; hangisini kastettiğinizi yalnızca siz bilirsiniz.

Kontrol karakterleri gidiş dönüşten sağ çıkar

9 10 13 0
TAB, LF, CR, NUL

Çıktı kutusunda görünmezler; bu yüzden önizleme satırı onları Unicode Control Pictures karakterleriyle gösterir. Kopyala düğmesi yine de vekilleri değil, gerçek baytları kopyalar.

127'nin üstündeki baytlar gerekçesiyle birlikte reddedilir

233
ASCII dışında (0-127)

233 bir ASCII kodu değildir. Araç size bunun hem Windows-1252 hem de ISO-8859-1 içinde é okunduğunu söyler, ama bunun ASCII olduğunu iddia etmez.

Nasıl kullanılır

  1. 1

    Tabanı seçin

    Ondalık, onaltılık, sekizlik ya da ikilik. Bunu önce yapın — aynı rakamlar her tabanda başka türlü çözülür ve araç bilerek tahmin yürütmez.

  2. 2

    İki alandan birine yazın

    Bir alanda metin, diğerinde kodlar. Hangisine yazarsanız yazın, öteki anında güncellenir.

  3. 3

    Uyarıları okuyun

    0–127 dışındaki karakterler sessizce atılmak ya da soru işaretine çevrilmek yerine kod noktaları ve UTF-8 baytlarıyla birlikte listelenir.

  4. 4

    Tabloyu başvuru kaynağı olarak kullanın

    Yalnızca kontrol karakterlerini süzün, koda ya da ada göre arayın, kopyalamak için herhangi bir karaktere tıklayın.

Bilmeye değer hatalar

ASCII'nin 256 karakteri olduğunu söylemek

ASCII 127'de biter. Ötesindeki her şey, adı konması gereken belirli bir 8 bitlik kod sayfasına aittir. Python'a aksanlı bir karakteri ASCII olarak kodlamasını söylerseniz bunu size doğrudan bildirir.

✗ Yanlış
'cafe\u00e9'.encode('ascii')  # UnicodeEncodeError: ordinal not in range(128)
✓ Doğru
'cafe\u00e9'.encode('utf-8')   # b'cafe\xc3\xa9'

Her dilin aynı kaçışlara sahip olduğunu varsaymak

JavaScript'te \a kaçışı yoktur. Hata vermek yerine ters eğik çizgiyi atar ve elinizde harf kalır; katı kip de işe yaramaz.

✗ Yanlış
"\a".charCodeAt(0)   // 97 - that is the letter 'a', not BEL
✓ Doğru
"\x07".charCodeAt(0) // 7 - BEL

Şapka gösterimini toplama diye açıklamak

0x40 eklemek C0 aralığında işe yarar, sonra DEL'de kırılır; orada çıkarmanız gerekirdi. XOR, 33'ünün tamamını kapsayan tek kuraldır.

✗ Yanlış
caret = chr(code + 0x40)   # 0x7F + 0x40 overflows past the table
✓ Doğru
caret = chr(code ^ 0x40)   # 0x00 -> @, 0x1B -> [, 0x7F -> ?

Ne zaman işinize yarar

Onaltılık döküm ya da protokol izi okumak
Elinizde baytlar var ve hangilerinin yazdırılabilir, hangilerinin ayırıcı, hangilerinin terminalin sessizce uyguladığı kontrol kodları olduğunu bilmeniz gerekiyor.
Tuhaf davranan bir dosyayı ayıklamak
Her satırın sonundaki başıboş bir CR, grep'in dosyayı ikili saymasına yol açan bir NUL ya da Makefile'ın gerçek TAB istediği yerde duran boşluklar.
Ayrıştırıcı ya da doğrulayıcı yazmak
Hangi bayt aralıklarının kabul edileceğine karar vermek ve sınırları doğru koymak — grafik karakterler için 0x210x7E, boşluk için 0x20, DEL için 0x7F.
Bir kodlama hatasını anlatmak
Aynı baytın, okuyanın varsaydığı kod sayfasına göre neden üç ayrı karakter olarak göründüğünü bir meslektaşınıza göstermek.

Teknik ayrıntılar

ASCII, Unicode ve UTF-8
Unicode'un ilk 128 kod noktası, U+0000 ile U+007F arası, ASCII ile bire bir örtüşür. UTF-8 bunları en üst biti sıfır olan tek baytlar (0x000x7F) olarak kodlar. Asıl yükü taşıyan üçüncü özelliktir: çok baytlı bir UTF-8 dizisindeki her baytın en üst biti 1'dir, dolayısıyla 0–127 aralığındaki bir bayt asla ASCII dışı bir karakterin parçası olamaz. UTF-8 içinde /, \0 ya da \n aramak için bayt bayt taramanın güvenli olmasının dayanağı budur.
8. bit
ASCII 7 bitlik bir kod tanımlar; karakter başına bir 8 bitlik bayt saklamak bir saklama geleneğidir ve tarihsel olarak o boşta kalan bit çoğu zaman eşlik biti olarak kullanılmıştır. Yalnızca 7 bit saydamlığı garanti eden posta aktarımları, Base64 ile quoted-printable'ın var olma nedenidir.
Alfabe neden böyle dizilmiş
09 rakamları 0x300x39 aralığında oturur, yani düşük dört bit doğrudan sayının kendisidir. A 0x41, a ise 0x61'dir — aralarında tek bir bit vardır; bu yüzden c | 0x20 küçültür, c & 0xDF büyütür. Ama yalnızca harfler için: '_' | 0x20 size 0x7F yani DEL'i, '[' | 0x20 ise { karakterini verir.
Ulusal varyantlar ve 0x5C sorunu
ISO/IEC 646, 12 kod noktasının ülkeye göre değiştirilmesine izin veriyordu. Japonya'nın JIS X 0201 standardı 0x5C konumuna yen işaretini, Kore'nin KS X 1003 standardı ise won işaretini koydu — Japonca Windows'un yolları yen işaretiyle göstermesinin, baytın hâlâ 0x5C olmasının nedeni budur. Shift_JIS'te işler daha da kötüleşir: iki baytlık bir karakterin ikinci baytı 0x5C olabilir; 表, ソ, 十, 能, 構 ve 暴 karakterlerinin hepsi onunla biter, dolayısıyla ters eğik çizgiyi saf biçimde işleyen kod bunları ikiye böler.

Doğrusu nasıl yazılır

Kod sayfasını her zaman adıyla söyleyin
„Genişletilmiş ASCII" okuyucuya hiçbir şey anlatmaz. Windows-1252 deyin, ISO-8859-1 deyin ya da CP437 deyin — aynı bayt her birinde başka bir karakterdir.
Kastettiğiniz şey US-ASCII ise öyle yazın
IANA'da kayıtlı ad budur. charset=ascii o değildir; tarayıcıda charset=ISO-8859-1 yazarsanız da fiilen Windows-1252 alırsınız, çünkü WHATWG Kodlama Standardı bu etiketi öyle eşler.
Kullanıcı adına asla taban tahmin etmeyin
Aracınız ya da ayrıştırıcınız 41 değerinin onaltılık olduğuna sessizce karar verirse, yaklaşık yarı yarıya yanılır ve hata sessiz kalır.
UTF-16 birimi üzerinden değil, kod noktası üzerinden ilerleyin
"A" artı bir sol anahtar artı bir Çince karakterin .length değeri 4'tür ama karakter sayısı yalnızca üçtür. [...str] ya da codePointAt kullanın; yoksa „desteklenmeyen karakter" mesajınız bir emojiyi iki bozuk yarım olarak raporlar.

Sık sorulan sorular

ASCII'de kaç karakter var?
128. ASCII 7 bitlik bir kodlamadır; tam olarak 0 ile 127 arasındaki kod noktalarını tanımlar: 32 adet C0 kontrol karakteri, boşluk dahil 95 grafik karakter ve DEL. Başlığında „tam ASCII tablosu (256 karakter)" yazan yazılar size ASCII'yi değil, belirli bir 8 bitlik kod sayfasını — çoğunlukla CP437 ya da Windows-1252 — gösteriyordur.
Genişletilmiş ASCII nedir?
Kesin konuşursak, hiçbir şey. „Genişletilmiş ASCII" herhangi bir standardın adı değildir; 0–127 aralığını aynı bırakıp 128–255 aralığını her biri başka türlü tanımlayan bir dizi 8 bitlik kodlama için kullanılan gevşek bir tabirdir. 0xE9 baytı ISO-8859-1'de é, CP437'de Yunan harfi Θ, CP866'da ise bir Kiril harfidir. Kod sayfası adlandırılmadan bu sorunun yanıtı yoktur.
Windows-1252 ile ISO-8859-1 aynı mı?
0xA0 ile 0xFF arasında birebir aynıdırlar, 0x80 ile 0x9F arasında ise tamamen farklıdırlar. ISO-8859-1 bu aralığı görünmez C1 kontrol karakterlerine bırakır; Windows-1252 ise oraya 27 yazdırılabilir karakter — euro işareti, kıvrık tırnaklar, kısa ve uzun çizgi — koyar ve 5 konumu tanımsız bırakır. Kelime işlemciden kopyalanan kıvrık bir tırnağın, gerçekten ISO-8859-1 olan bir şeyden geçtiğinde görünmez bir kontrol karakterine dönüşmesinin nedeni budur.
DEL bir kontrol karakteri mi?
Evet. Unicode U+007F kod noktasını Cc olarak sınıflandırır ve C dilinde iscntrl(127) doğru döner. Yalnızca C0 kümesinin parçası değildir; C0 kesin olarak 0x000x1F aralığıdır. Tablonun sonunda oturmasının nedeni delikli şerittir: 0x7F yedi deliğin de delinmiş olması demektir ve bir deliği bir kez deldikten sonra geri kapatamazsınız, dolayısıyla „hepsi delinmiş" bir karakteri silinmiş diye işaretlemenin tek yoluydu.
Boşluk karakteri bir kontrol karakteri mi?
Hayır ve pek çok ASCII tablosu burada yanlış yapar. Unicode boşluğu (0x20) Zs yani boşluk ayırıcı olarak sınıflandırır; bu bir grafik karakterdir. Kontrol karakterleri yalnızca 0x000x1F ile 0x7F'tir.
ASCII 7 bitse ikilik sütunu neden 8 bit gösteriyor?
Çünkü her şeyin fiilen içinde saklandığı birim bayttır — en üst bit yalnızca her zaman 0'dır. Bu dolgu süs değildir: ASCII sekizinci biti hiç kullanmadığı için UTF-8 o biti „bu, çok baytlı bir dizinin parçasıdır" bayrağı olarak sahiplenebilmiştir; UTF-8'i ASCII ile geriye dönük uyumlu kılan da tam olarak budur.
Her dil kontrol karakterlerini aynı şekilde mi yazar?
Hayır ve farklar canınızı yakar. \a (zil) C ve Python'da standarttır, ama JavaScript'te böyle bir kaçış yoktur'\a' sessizce a harfine dönüşür, katı kipte bile hata vermez. Java hem \a hem \v kaçışını reddeder. Go \0 kaçışını reddeder, çünkü sekizlik kaçışları tam üç basamak olmak zorundadır; \000 yazarsınız. ESC için kullanılan \e ise ISO C değil, bir GNU uzantısıdır.
git diff ya da vim içindeki ^M ne anlama geliyor?
Satır başı karakteridir, 13 numaralı bayt. Şapka gösterimi bir kontrol karakterini değeriyle 0x40 arasında XOR alarak yazar; böylece CR (0x0D) ^M, ESC (0x1B) ise ^[ olur. Her satırın sonunda ^M görmek dosyanın Windows CRLF satır sonları taşıdığı anlamına gelir; bad interpreter: /bin/bash^M görmek ise bir kabuk betiğinin bunları kaptığını gösterir.