ASCII
미국 정보 교환 표준 부호. 0~127의 128개 문자를 다루는 7비트 인코딩으로, 제어 문자, 숫자, 라틴 문자, 기본 기호를 포함합니다.
What is ASCII?
ASCII — the American Standard Code for Information Interchange — is the foundational character encoding standard that underpins virtually all modern text processing. Finalized in 1963 and revised in 1967, ASCII defines a mapping between 128 integer values (0–127) and a specific set of characters: 33 non-printable control characters, 10 digits, 52 letters (26 uppercase, 26 lowercase), and 33 punctuation and symbol characters.
Understanding ASCII is not merely historical homework. It remains deeply embedded in protocols, file formats, programming languages, and the design of every encoding standard that came after it — including UTF-8, which was intentionally designed to be fully backward compatible with ASCII.
How ASCII Works
ASCII represents each character as a 7-bit binary number. Although modern systems store ASCII in 8-bit bytes, the high bit is always 0, leaving 128 usable positions. The layout was carefully designed:
- 0–31: Non-printable control characters (NUL, TAB, LF, CR, ESC, etc.)
- 32: Space
- 33–47: Punctuation (
!,",#,$,%,&,',(,),*,+,,,-,.,/) - 48–57: Digits
0–9 - 65–90: Uppercase
A–Z - 97–122: Lowercase
a–z
One clever design choice: uppercase and lowercase letters differ by exactly one bit (bit 5). A is 65 (0b01000001), a is 97 (0b01100001). This made case-insensitive comparisons trivial in early hardware by simply masking or setting a single bit.
Code Examples
# Python: ASCII value of a character
ord('A') # 65
ord('a') # 97
ord('0') # 48
ord('\n') # 10 (newline / LF)
# Character from ASCII value
chr(65) # 'A'
chr(97) # 'a'
# Check if a string is pure ASCII
'Hello'.isascii() # True
'Héllo'.isascii() # False
'Hello\n'.isascii() # True (control chars count)
// JavaScript
'A'.charCodeAt(0); // 65
String.fromCharCode(65); // 'A'
// Check ASCII-safe range
[...'Hello'].every(c => c.charCodeAt(0) < 128); // true
Quick Facts
| Property | Value |
|---|---|
| Full Name | American Standard Code for Information Interchange |
| Year | 1963 (finalized), 1967 (revised) |
| Bits per character | 7 |
| Total characters | 128 (0–127) |
| Printable characters | 95 |
| Control characters | 33 |
| Standard body | ASA (now ANSI) |
| Modern relevance | Subset of Unicode, UTF-8, Latin-1, Windows-1252 |
Common Pitfalls
Confusing ASCII with Latin-1 or Windows-1252. ASCII ends at code point 127. The characters in the 128–255 range (é, ü, ñ, etc.) are NOT ASCII — they belong to extended encodings like ISO 8859-1 or Windows-1252. Many developers incorrectly say "ASCII" when they mean one of these extended encodings.
Assuming "ASCII text" is safe everywhere. While ASCII characters have identical byte values in UTF-8, UTF-16, and UTF-32, the surrounding binary framing differs. An ASCII file opened as UTF-16 (which uses 2 bytes per character and may have a BOM) will produce garbage.
Forgetting that control characters are ASCII. Tab (9), newline (10), carriage return (13), null (0), escape (27) — these are all ASCII values. The presence of control characters does not mean a file is "not ASCII."
ASCII in the Unicode Ecosystem
Unicode's first 128 code points (U+0000 to U+007F) are identical to ASCII. This was a deliberate choice to ensure backward compatibility. Every ASCII document is automatically valid UTF-8 without any changes to the byte values. This compatibility is one of the key reasons UTF-8 became the dominant web encoding.
The ASCII control characters also survive in Unicode, though several (like NUL, U+0000) have special handling in software. The printable ASCII range (U+0020–U+007E) is sometimes called the Basic Latin block in Unicode terminology.
관련 용어
인코딩의 더 많은 용어
Visual art created from text characters, originally limited to the 95 printable …
Binary-to-text encoding that represents binary data using 64 ASCII characters (A–Z, a–z, …
주로 대만과 홍콩에서 사용되는 번체 중국어 문자 인코딩으로, 약 13,000개의 CJK 문자를 …
확장 이진화 십진법 교환 부호. 문자 범위가 연속적이지 않은 IBM 메인프레임 인코딩으로, …
KS X 1001 기반의 한국어 문자 인코딩으로, 한글 음절과 한자를 2바이트 시퀀스에 …
간체 중국어 문자 인코딩 체계: GB2312(6,763자)에서 GBK를 거쳐 GB18030으로 발전하였으며, 유니코드와 호환되는 …
IANA가 관리하는 문자 인코딩 이름의 공식 레지스트리로, HTTP Content-Type 헤더와 MIME에서 사용됩니다(예: …
서로 다른 언어권을 위한 8비트 단일 바이트 인코딩 모음. ISO 8859-1(Latin-1)은 유니코드 …
단일 바이트 ASCII/JIS 로만과 이중 바이트 JIS X 0208 한자를 결합한 일본어 …
BMP(U+0000~U+FFFF)만 지원하는 구식 고정 2바이트 인코딩. UTF-16의 전신으로 보충 문자를 표현할 수 …