Skip to content

아스키코드표와 ASCII 변환기

ASCII 128자 전체 코드표. 10진수, 16진수, 8진수, 2진수 대조와 문자↔ASCII 코드 양방향 변환. 제어문자는 이스케이프와 캐럿 표기까지 정리한 온라인 도구.

트래킹 없음 브라우저 실행 무료

모든 처리는 브라우저 안에서 이뤄집니다. 입력은 업로드되거나 기록되거나 저장되지 않습니다.

텍스트와 ASCII 코드, 양방향

ASCII 전체 표(0–127)

128 / 128
10진수 16진수 8진수 2진수 문자 이름 이스케이프 캐럿 HTML 어디서 만나는가
0 00 000 00000000 NUL Null \0 ^@ � C 문자열 종료자. find -print0과 xargs -0이 파일 이름을 구분할 때 쓰고, grep은 이걸 보면 「Binary file matches」라고 알립니다.
1 01 001 00000001 SOH Start of Heading ^A  FIX 프로토콜이 필드 구분자로 씁니다. FIX 메시지가 한 줄로 이어 붙은 것처럼 보이는 이유입니다.
2 02 002 00000010 STX Start of Text ^B  시리얼, POS, 바코드 스캐너 프로토콜의 프레임 머리. tmux 기본 프리픽스 키 Ctrl+B.
3 03 003 00000011 ETX End of Text ^C  Ctrl+C가 보내는 바이트입니다. tty 라인 디서플린이 SIGINT로 바꾸므로 프로그램은 이 바이트를 보지 못합니다.
4 04 004 00000100 EOT End of Transmission ^D  Ctrl+D는 현재 입력 줄을 제출합니다. 줄이 비어 있으면 read가 0바이트를 반환하고, 그것이 EOF입니다.
5 05 005 00000101 ENQ Enquiry ^E  옛 링크 핸드셰이크. 이를 받으면 식별 문자열을 돌려보내는 터미널도 있습니다.
6 06 006 00000110 ACK Acknowledge ^F  옛 링크 계층 프로토콜에서 ENQ, NAK와 짝을 이룹니다. 지금도 산업용 시리얼 장비에서 보입니다.
7 07 007 00000111 BEL Bell \a ^G  printf '\a'로 벨이 울립니다. 요즘은 창 제목 설정 같은 OSC 시퀀스의 종료자로 쓰이는 일이 더 많습니다.
8 08 010 00001000 BS Backspace \b ^H  진행 표시줄에서 지울 때 씁니다. 다만 대부분의 터미널에서 Backspace 키는 이 바이트가 아니라 0x7F를 보냅니다.
9 09 011 00001001 HT Character Tabulation \t ^I 	 Makefile 레시피 줄은 진짜 탭으로 시작해야 합니다. gofmt는 탭으로 들여쓰며, Tab 키와 Ctrl+I는 같은 바이트입니다.
10 0A 012 00001010 LF Line Feed \n ^J 
 유닉스와 macOS의 줄바꿈. git의 core.autocrlf가 이것과 CRLF 사이를 오가며 변환합니다.
11 0B 013 00001011 VT Line Tabulation \v ^K  거의 사라졌지만 여전히 줄바꿈으로 셉니다. splitlines()는 여기서 나누지만 split("\n")은 나누지 않습니다.
12 0C 014 00001100 FF Form Feed \f ^L  프린터 페이지 넘김. Ctrl+L은 터미널을 지우고, Emacs는 소스 파일의 구역 표시로 씁니다.
13 0D 015 00001101 CR Carriage Return \r ^M 
 Windows CRLF의 앞쪽 절반. git diff에서 ^M으로 보이며 「bad interpreter: /bin/bash^M」의 원인입니다.
14 0E 016 00001110 SO Shift Out ^N  ISO 2022에서 G1 대체 문자 집합으로 전환합니다. EBCDIC 메인프레임에서는 두 바이트 구역을 감쌉니다.
15 0F 017 00001111 SI Shift In ^O  G0 기본 문자 집합으로 되돌립니다. SO와 짝을 이룹니다.
16 10 020 00010000 DLE Data Link Escape ^P  옛 바이너리 프로토콜에서 바이트 스터핑에 쓰는 이스케이프 접두 바이트.
17 11 021 00010001 DC1 Device Control One ^Q  XON — 소프트웨어 흐름 제어 재개. Ctrl+Q가 터미널 출력을 다시 흐르게 합니다.
18 12 022 00010010 DC2 Device Control Two ^R  현대에는 고정된 뜻이 없습니다. 셸의 Ctrl+R은 readline 키 바인딩이며 이 코드와 무관합니다.
19 13 023 00010011 DC3 Device Control Three ^S  XOFF — 소프트웨어 흐름 제어 일시 정지. 터미널이 「멈춘」 원인은 대개 Ctrl+S 오타입니다.
20 14 024 00010100 DC4 Device Control Four ^T  현대에는 고정된 뜻이 없습니다. BSD와 macOS에서 Ctrl+T는 tty 상태 키입니다.
21 15 025 00010101 NAK Negative Acknowledge ^U  Ctrl+U는 줄 전체를 지웁니다. 그것은 tty의 kill 설정이지 이 코드의 본래 뜻이 아닙니다.
22 16 026 00010110 SYN Synchronous Idle ^V  Ctrl+V는 lnext입니다. 이걸 누른 뒤 Tab을 누르면 자동 완성 없이 bash에 진짜 탭을 입력할 수 있습니다.
23 17 027 00010111 ETB End of Transmission Block ^W  Ctrl+W는 앞 단어를 지웁니다. tty의 werase 설정입니다.
24 18 030 00011000 CAN Cancel ^X  ECMA-48은 끝나지 않은 제어 시퀀스를 중단하는 데 씁니다. 터미널은 해석 중이던 시퀀스를 버립니다.
25 19 031 00011001 EM End of Medium ^Y  오늘날 거의 쓰이지 않습니다. BSD와 macOS에서 Ctrl+Y는 지연 서스펜드입니다.
26 1A 032 00011010 SUB Substitute ^Z  CP/M과 DOS 텍스트 파일의 끝 표시. Windows 콘솔이 Ctrl+Z로 입력을 끝내는 이유입니다.
27 1B 033 00011011 ESC Escape ^[  모든 ANSI 이스케이프 시퀀스의 시작. \033[0m은 색을 되돌리고 \033[2J는 화면을 지웁니다. Ctrl+[도 이것을 보냅니다.
28 1C 034 00011100 FS File Separator ^\  HL7 v2의 MLLP 프레이밍에서 블록 종료자로 씁니다. Ctrl+\는 SIGQUIT을 보냅니다.
29 1D 035 00011101 GS Group Separator ^]  GS1 바코드에서 FNC1 구분자가 이 바이트입니다. 스캐너가 내보내는 그 보이지 않는 구분자입니다.
30 1E 036 00011110 RS Record Separator ^^  RFC 7464 JSON Text Sequences는 레코드마다 앞에 이것을 붙입니다. 지금도 살아 있는 몇 안 되는 쓰임새입니다.
31 1F 037 00011111 US Unit Separator ^_  구조화된 텍스트의 필드 구분자. 본문에 나타나지 않으므로 쉼표보다 안전합니다.
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 ^?  대부분의 터미널에서 Backspace 키가 실제로 보내는 바이트입니다. 이름은 종이 테이프에서 왔고, 구멍 일곱 개를 전부 뚫은 상태를 뜻합니다.

2진수 열은 읽기 쉽도록 8자리로 채웠습니다. ASCII 자체는 7비트 코드이고 최상위 비트는 언제나 0입니다. UTF-8이 ASCII와 하위 호환을 유지할 수 있는 것이 바로 이 덕분입니다.

128–255는 어떻게 되나요?

ASCII는 128–255를 아예 정의하지 않습니다. 「확장 ASCII」는 어떤 표준의 이름도 아니고 8비트 인코딩 무리를 두루 부르는 말입니다. 같은 바이트가 각각에서 다른 문자입니다:

바이트 ISO-8859-1 Windows-1252 CP437 CP866
0x80 U+0080 C1 제어문자(보이지 않음) Ç А
0x93 U+0093 C1 제어문자(보이지 않음) ô У
0xB0 ° °
0xE9 é é Θ щ
0xFF ÿ ÿ U+00A0 U+00A0
문자 분류는 테스트 시점에 유니코드 자체 범주와 교차 확인하고, Windows-1252 대응은 플랫폼 디코더와 한 바이트씩 대조합니다. — Go-Tools 엔지니어링 팀 · Sep 2, 2026

표의 모든 값은 서버와 브라우저가 함께 쓰는 하나의 엔진에서 생성됩니다. 그래서 크롤러가 읽는 내용과 사용자가 조작해 얻는 결과가 어긋날 수 없습니다. 언어별 이스케이프 차이는 기억에 기대지 않고 각 언어에서 직접 컴파일하고 실행해 확인했습니다.

빠른 참조

A의 ASCII 코드는 무엇인가요?

A = 65 대문자 `A`는 10진수로 65, 16진수로 `0x41`, 8진수로 `101`, 2진수로 `01000001`입니다. 소문자 `a`는 97로 정확히 32 더 크며, 그 차이는 비트 하나입니다.

ASCII에는 문자가 몇 개인가요?

128 128개이고 번호는 0부터 127까지입니다. 제어문자 32개, 공백을 포함한 그래픽 문자 95개, 그리고 DEL입니다.

ASCII 0은 무엇인가요?

0 = NUL 널 문자 NUL입니다. C에서 문자열을 끝내고, `find -print0`에서 파일 이름을 구분하며, `grep`이 파일을 바이너리로 취급하게 합니다.

줄바꿈은 어느 바이트인가요?

LF = 10, CR = 13 라인 피드(LF)는 10(`0x0A`, `\n`), 캐리지 리턴(CR)은 13(`0x0D`, `\r`)입니다. Windows 줄바꿈은 둘 다이며 CR이 먼저입니다.

ASCII란?

ASCII는 7비트 문자 인코딩입니다. 코드 포인트는 128개, 번호는 0부터 127까지이며 그 이상은 없습니다. 처음에는 ASA X3.4-1963으로 발표되었고 현재 형태는 ANSI X3.4-1986입니다. RFC 20이 인터넷에서의 사용을 기술했고 2015년 인터넷 표준 STD 80으로 승격되었습니다. 첫 판에는 소문자가 아예 없었고, 소문자는 1967년 개정판에서 들어왔습니다. 127을 넘는 모든 것은 ASCII가 아니라 다른 인코딩에 속합니다.

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

이 표가 주는 것

네 가지 진법을 나란히

128개 코드 포인트 하나하나에 대해 10진수, 16진수, 8진수, 8자리 2진수를 보여줍니다. 맨 앞의 0이 ASCII가 사실은 7비트라는 점을 계속 상기시켜 줍니다.

언어별 이스케이프 표기

\0 \a \b \t \n \v \f \r 열에 더해, 실제로 빌드를 깨뜨리는 차이까지 담았습니다. JavaScript에는 \a가 없고, Java에는 \a\v도 없으며, \e는 ISO C가 아니라 GNU 확장입니다.

캐럿 표기

^@부터 ^?까지의 열과, 제어문자 33개 전부에 통하는 단 하나의 규칙입니다. 바이트와 0x40배타적 논리합을 취하세요. 더하기도 빼기도 아닌 XOR입니다.

그 제어문자를 실제로 어디서 만나는지

「SOH — 헤딩 시작」에서 그치지 않고, FIX 프로토콜이 그것을 필드 구분자로 쓴다는 점, 0x1D가 바코드 스캐너가 내보내는 보이지 않는 구분자라는 점, Ctrl+S로 터미널이 멈추는 것이 XOFF라는 점까지 적어 두었습니다.

추측하지 않는 변환기

진법은 사용자가 고릅니다. 127을 넘는 바이트는 Windows-1252와 ISO-8859-1에서 각각 어떻게 읽히는지 덧붙여 거부하며, ASCII인 것처럼 넘기지 않습니다.

제어문자가 사라지지 않습니다

NUL, TAB, CR에는 글자꼴이 없으므로 미리보기가 유니코드 제어 그림 문자로 보여 줍니다. 복사 버튼은 여전히 실제 바이트를 줍니다.

관련 인코딩

ISO/IEC 8859-1(Latin-1)

8비트 단일 바이트

0–127은 ASCII와 완전히 같고, 0xA0부터 0xFF까지 그래픽 문자 96개를 정의합니다. 0x800x9F 구간은 보이지 않는 C1 제어문자에 넘겨져 있습니다.

Windows-1252

8비트 단일 바이트

ISO-8859-1의 상위 집합이며 유일한 차이는 0x800x9F입니다. 그 자리에 인쇄 가능한 문자 27개를 넣고 5개는 정의하지 않았습니다. 페이지가 ISO-8859-1을 표방하면 브라우저가 실제로 쓰는 것은 이쪽입니다.

CP437

8비트 단일 바이트

IBM PC의 원래 코드 페이지입니다. 위쪽 절반은 악센트 문자, 그리스 문자, 괘선 문자로 채워져 있으며, 「ASCII 256자」를 내세우는 글에 실린 표가 대개 이것입니다.

UTF-8

가변 길이 1–4바이트

유니코드 전체를 인코딩하면서 ASCII 바이트는 하나하나 그대로 유지합니다. 하위 호환되는 대상은 US-ASCII이며, 위의 8비트 코드 페이지 중 어느 것과도 호환되지 않습니다.

예시

텍스트를 10진수 코드로

Hello
72 101 108 108 111

각 문자가 자신의 10진수 코드 포인트가 됩니다. 대문자는 65–90, 소문자는 97–122로 정확히 32 차이이며, 이는 비트 하나입니다. 5번 비트를 뒤집으면 대소문자가 바뀌는 이유입니다.

같은 숫자를 두 진법으로 읽으면

41 42 43
hex -> ABC     decimal -> )*+

이 변환기가 진법을 대신 추측하지 않는 이유입니다. 두 해석 모두 올바르며, 어느 쪽을 뜻했는지는 입력한 사람만 압니다.

제어문자도 왕복이 됩니다

9 10 13 0
TAB, LF, CR, NUL

출력 칸에서는 보이지 않으므로 미리보기 줄이 유니코드 제어 그림 문자로 드러내 줍니다. 복사 버튼은 대역이 아니라 실제 바이트를 그대로 복사합니다.

127을 넘는 바이트는 이유와 함께 거부

233
Outside ASCII (0-127)

233은 ASCII 코드가 아닙니다. Windows-1252와 ISO-8859-1 모두에서 é로 읽힌다는 사실은 알려주지만, 그것을 ASCII인 척하지는 않습니다.

사용 방법

  1. 1

    진법을 먼저 고르기

    10진수, 16진수, 8진수, 2진수 중 하나입니다. 이 단계를 가장 먼저 하세요. 같은 숫자라도 진법이 다르면 해석이 달라지고, 이 도구는 의도적으로 추측하지 않습니다.

  2. 2

    어느 쪽에 입력해도 됩니다

    왼쪽은 텍스트, 오른쪽은 코드입니다. 어느 한쪽에 입력하면 반대쪽이 갱신됩니다.

  3. 3

    경고를 읽기

    0–127 밖의 문자는 조용히 버리거나 물음표로 대체하지 않고, 코드 포인트와 UTF-8 바이트를 함께 나열합니다.

  4. 4

    표를 참조 자료로 쓰기

    제어문자만 걸러 보고, 코드나 이름으로 검색하고, 아무 문자나 클릭해 복사할 수 있습니다.

알아둘 만한 실수

ASCII에 256자가 있다고 말하기

ASCII는 127에서 끝납니다. 그 위는 이름을 지목해야 하는 특정 8비트 코드 페이지에 속합니다. 악센트가 붙은 문자를 ASCII로 인코딩해 보라고 하면 Python이 그 사실을 직접 말해 줍니다.

✗ 오류
'cafe\u00e9'.encode('ascii')  # UnicodeEncodeError: ordinal not in range(128)
✓ 정상
'cafe\u00e9'.encode('utf-8')   # b'cafe\xc3\xa9'

모든 언어의 이스케이프가 같다고 넘겨짚기

JavaScript에는 \a 이스케이프가 없습니다. 오류를 내는 대신 백슬래시를 떨어뜨리고 글자만 남기며, strict 모드도 도와주지 않습니다.

✗ 오류
"\a".charCodeAt(0)   // 97 - that is the letter 'a', not BEL
✓ 정상
"\x07".charCodeAt(0) // 7 - BEL

캐럿 표기를 덧셈으로 설명하기

0x40을 더하는 설명은 C0 구간에서는 통하지만 DEL에서 깨집니다. 거기서는 반대로 빼야 하기 때문입니다. 33개 전부를 덮는 규칙은 배타적 논리합 하나뿐입니다.

✗ 오류
caret = chr(code + 0x40)   # 0x7F + 0x40 overflows past the table
✓ 정상
caret = chr(code ^ 0x40)   # 0x00 -> @, 0x1B -> [, 0x7F -> ?

이럴 때 필요합니다

16진수 덤프나 프로토콜 트레이스 읽기
손에 있는 것은 바이트뿐이고, 어느 것이 인쇄 가능한지, 어느 것이 구분자인지, 어느 것이 터미널이 조용히 실행 중인 제어 코드인지 가려내야 합니다.
이상하게 동작하는 파일 살펴보기
줄 끝마다 끼어든 CR, grep이 파일을 바이너리로 판정하게 하는 NUL, Makefile이 진짜 TAB을 요구하는 자리 같은 것들입니다.
파서나 검증기 작성
어떤 바이트 범위를 받아들일지 정하고 경계를 정확히 잡는 일입니다. 그래픽 문자는 0x210x7E, 공백은 0x20, DEL은 0x7F입니다.
인코딩 버그 설명하기
같은 한 바이트가 읽는 쪽이 가정한 코드 페이지에 따라 세 가지 다른 문자로 보이는 이유를 동료에게 보여 줄 때입니다.

기술 세부사항

ASCII와 유니코드, UTF-8
유니코드의 첫 128개 코드 포인트 U+0000–U+007F는 ASCII와 일대일로 대응합니다. UTF-8은 그것들을 최상위 비트가 0인 한 바이트 0x000x7F로 인코딩합니다. 정작 중요한 것은 세 번째 성질입니다. 다중 바이트 UTF-8 시퀀스는 모든 바이트의 최상위 비트가 1이므로, 0–127 범위의 바이트가 ASCII가 아닌 문자의 일부가 되는 일은 결코 없습니다. UTF-8 바이트열을 한 바이트씩 훑으며 /\0, \n을 찾아도 안전한 근거가 바로 이것입니다.
여덟 번째 비트
ASCII가 정의하는 것은 7비트 코드이고, 한 문자를 8비트 바이트 하나에 담는 것은 관례입니다. 역사적으로 그 남는 비트는 흔히 패리티 비트로 쓰였습니다. 7비트 투과성만 보장하던 메일 전송 경로가 바로 Base64와 quoted-printable이 존재하는 이유입니다.
글자 배치가 이렇게 된 이유
숫자 090x300x39에 있어서 하위 4비트가 곧 값 자체입니다. A0x41, a0x61로 비트 하나 차이라서 c | 0x20은 소문자로, c & 0xDF는 대문자로 만듭니다. 다만 영문자에 한해서입니다. '_' | 0x200x7F, 즉 DEL이 되고 '[' | 0x20{가 됩니다.
국가 변형과 0x5C 문제
ISO/IEC 646은 코드 포인트 12개를 나라마다 바꿔 쓰도록 허용했습니다. 일본의 JIS X 0201은 0x5C를 엔 기호로, 한국의 KS X 1003은 원화 기호로 정했습니다. 그래서 한국어 Windows에서 경로가 C:₩Windows로, 일본어 Windows에서는 C:¥Windows로 보이는 것인데, 바이트는 여전히 0x5C입니다. 인코딩 오류가 아니라 글자꼴 선택입니다. Shift_JIS에서는 더 고약해서, 두 바이트 문자의 뒤 바이트 자체가 0x5C일 수 있습니다(이른바 「5C 문제」). 表(95 5C), ソ(83 5C), 十(8F 5C), 能(94 5C), 構(8D 5C), 暴(96 5C)가 그런 예이며, 이를 백슬래시로 순진하게 처리하면 글자가 반으로 쪼개집니다.

제대로 다루는 법

코드 페이지를 언제나 지목하세요
「확장 ASCII」라고 쓰면 읽는 사람에게 아무것도 전달되지 않습니다. Windows-1252, ISO-8859-1, CP437이라고 말하세요. 같은 바이트가 각각에서 다른 문자입니다.
US-ASCII를 뜻할 때는 US-ASCII라고 쓰세요
그것이 IANA 등록 이름입니다. charset=ascii는 등록 이름이 아니며, 브라우저에서 charset=ISO-8859-1이라고 쓰면 실제로 얻는 것은 Windows-1252입니다. WHATWG Encoding Standard가 그 레이블을 그렇게 대응시키기 때문입니다.
사용자 대신 진법을 추측하지 마세요
도구나 파서가 41을 조용히 16진수로 단정하면 대략 절반은 틀리고, 그 실패는 조용히 일어납니다.
UTF-16 단위가 아니라 코드 포인트로 순회하세요
"A"에 높은음자리표와 한자를 더한 문자열은 .length가 4지만 문자는 셋뿐입니다. [...str]이나 codePointAt을 쓰세요. 그러지 않으면 「지원하지 않는 문자」 메시지가 이모지 하나를 깨진 반쪽 둘로 보고하게 됩니다.

자주 묻는 질문

ASCII에는 문자가 몇 개 있나요?
128개입니다. ASCII는 7비트 인코딩이라 0부터 127까지의 코드 포인트만 정의합니다. C0 제어문자 32개, 공백을 포함한 그래픽 문자 95개, 그리고 DEL입니다. 「완전한 ASCII 표(256자)」라는 제목의 글이 보여주는 것은 특정 8비트 코드 페이지 — 대개 CP437이나 Windows-1252 — 이지 ASCII가 아닙니다.
확장 ASCII란 무엇인가요?
엄밀히 말하면 그런 것은 없습니다. 「확장 ASCII」는 어떤 표준의 이름도 아니고, 0–127은 ASCII와 똑같이 두고 128–255를 제각기 다르게 정의한 8비트 인코딩 무리를 두루 부르는 말입니다. 바이트 0xE9는 ISO-8859-1에서 é, CP437에서 그리스 문자 Θ, CP866에서 키릴 문자입니다. 어느 코드 페이지인지 지목하지 않으면 이 질문에는 답이 없습니다.
Windows-1252는 ISO-8859-1과 같나요?
0xA0부터 0xFF까지는 완전히 같고, 0x80부터 0x9F까지는 완전히 다릅니다. ISO-8859-1은 그 구간을 보이지 않는 C1 제어문자에 넘기지만, Windows-1252는 거기에 인쇄 가능한 문자 27개 — 유로 기호, 둥근 따옴표, en 대시와 em 대시 — 를 넣고 5개 자리를 정의하지 않은 채 남겨 둡니다. 워드프로세서에서 복사한 둥근 따옴표가 진짜 ISO-8859-1을 거치면 보이지 않는 제어문자로 변하는 이유입니다.
DEL은 제어문자인가요?
네. 유니코드는 U+007F를 Cc로 분류하고 C 표준 라이브러리의 iscntrl(127)도 참을 반환합니다. 다만 C0 집합에는 속하지 않습니다. C0는 엄밀히 0x000x1F입니다. 표 맨 끝에 있는 이유는 종이 테이프 때문입니다. 0x7F는 구멍 일곱 개를 모두 뚫은 상태이고, 한번 뚫은 구멍은 되돌릴 수 없으니 「전부 뚫기」만이 그 문자를 지워진 것으로 표시하는 유일한 방법이었습니다.
공백 문자는 제어문자인가요?
아닙니다. 그리고 이 부분을 틀린 ASCII 표가 적지 않습니다. 유니코드는 공백(0x20)을 Zs, 즉 공백 구분자로 분류하며 이는 그래픽 문자입니다. 제어문자는 0x000x1F0x7F뿐입니다.
ASCII는 7비트인데 2진수 열은 왜 8자리인가요?
실제로 저장되는 단위가 바이트이기 때문이고, 최상위 비트는 언제나 0입니다. 이 0 채움은 보기 좋으라고 있는 것이 아닙니다. ASCII가 여덟 번째 비트를 결코 쓰지 않기 때문에 UTF-8이 그 비트를 「이 바이트는 다중 바이트 시퀀스의 일부다」라는 표시로 가져갈 수 있었고, 그것이 UTF-8이 ASCII와 하위 호환되는 이유입니다.
제어문자 이스케이프는 모든 언어에서 같나요?
같지 않고, 그 차이는 실제로 물어뜯습니다. \a(벨)는 C와 Python에서 표준이지만 JavaScript에는 이 이스케이프가 없습니다. '\a'는 조용히 문자 a가 되고 strict 모드에서도 오류가 나지 않습니다. Java는 \a\v도 받지 않습니다. Go는 \0을 받지 않는데, 8진 이스케이프가 정확히 세 자리여야 해서 \000으로 씁니다. 그리고 ESC를 뜻하는 \e는 ISO C가 아니라 GNU 확장입니다.
git diff나 vim에 보이는 ^M은 무엇인가요?
캐리지 리턴, 바이트 13입니다. 캐럿 표기는 제어문자 값과 0x40배타적 논리합(XOR)을 취하므로 CR(0x0D)은 ^M, ESC(0x1B)는 ^[가 됩니다. 줄 끝마다 ^M이 보이면 그 파일은 Windows CRLF 줄바꿈이라는 뜻이고, bad interpreter: /bin/bash^M이 보이면 셸 스크립트가 그것을 물고 온 것입니다.

Base64 디코더 · 인코더 (Base64 Decoder & Encoder)

인코딩 & 포매팅

Base64를 온라인에서 무료로 인코딩하고 디코딩합니다. UTF-8과 이모지를 완벽 지원하는 실시간 변환으로, 100% 브라우저에서 처리되어 회원 가입이 필요 없습니다.

Base64 이미지 변환기 (온라인)

인코딩 & 포매팅

Base64 문자열이나 데이터 URI를 온라인 브라우저에서 이미지로 디코딩합니다. 미리보고, 치수와 MIME을 읽은 뒤 PNG, JPG, GIF, SVG로 다운로드하세요. 업로드 없음.

CSV to JSON 변환기 (CSV to JSON Converter)

인코딩 & 포매팅

브라우저에서 CSV를 JSON으로 변환합니다. RFC 4180, 타입 추론, 헤더 행, 큰 정수 안전 처리. 100% 비공개, 업로드 없음.

.env을 JSON으로 변환하는 도구

인코딩 & 포매팅

.env 파일을 붙여넣으면 즉시 JSON으로 변환됩니다. 데이터베이스 비밀번호, API 키, 토큰이 브라우저를 절대 벗어나지 않는 100% 비공개 무료 온라인 dotenv 파서입니다.

무료 HTML 엔티티 디코더 — HTML 언이스케이프

인코딩 & 포매팅

온라인에서 HTML 엔티티를 디코딩하고 HTML을 언이스케이프하세요. 무료, 가입 불필요, 100% 브라우저에서 처리. 이름·10진수·16진수 참조를 문자로 되돌리며 업로드 없음.

무료 HTML 엔티티 인코더 — HTML 이스케이프

인코딩 & 포매팅

온라인에서 HTML 엔티티를 인코딩하고 특수문자(< > & " ')를 이스케이프하세요. 무료, 100% 브라우저에서 처리. 이름·10진수·16진수 출력, 업로드 없음.