문자 코드 변환기 (유니코드·아스키)

글자와 유니코드 코드포인트·UTF-8 바이트·HTML 엔티티를 서로 변환하고 보이지 않는 문자를 찾습니다.

글자를 넣으면 코드포인트·UTF-8 바이트·HTML 엔티티를 표로 보여 줍니다.

보이는 글자 0코드포인트 0UTF-16 코드유닛 0UTF-8 바이트 0

글자별 코드

순번글자코드포인트10진수UTF-8 (16진수)UTF-16HTML 엔티티분류

사용 방법

  1. 글자 → 코드: 글을 붙여 넣으면 글자마다 코드포인트(U+…), 10진수, UTF-8 바이트, UTF-16 코드유닛, HTML 엔티티, 분류를 표로 보여 줍니다.
  2. 코드 → 글자: 방향을 바꾸고 U+AC00, 44032, 가, 0xEA 0xB0 0x80 같은 값을 넣으면 원래 글자로 되돌립니다. 값을 무엇으로 읽을지는 자동으로 판별하고, 필요하면 직접 고를 수 있습니다.
  3. 붙여 넣은 글에 눈에 보이지 않는 문자가 있으면 몇 번째 글자에 무엇이 있는지 알려 주고, 보이지 않는 문자 정리 단추로 한 번에 없앨 수 있습니다.
  4. 입력한 글은 서버로 전송되지 않습니다. 모든 계산은 브라우저 안에서 끝납니다. 한 번에 50,000자까지 분석합니다.

유니코드와 UTF-8은 무엇이 다른가

유니코드는 세상의 모든 글자에 번호를 하나씩 붙여 둔 약속입니다. 한글 "가"는 44032번, 영문 "A"는 65번이고, 이 번호를 16진수로 적어 U+AC00, U+0041처럼 씁니다. 번호는 U+0000부터 U+10FFFF까지 약 111만 자리가 있고, 그 가운데 실제로 글자가 배정된 것은 15만 개 정도입니다.

UTF-8은 그 번호를 파일·네트워크에 어떻게 담을지 정한 방식입니다. 번호가 작으면 짧게, 크면 길게 적는 가변 길이 방식이라 영문·숫자는 1바이트, 한글·한자는 3바이트, 이모지는 4바이트가 됩니다. 그래서 한글 세 글자짜리 이름이 9바이트를 차지하고, "1,000바이트 제한"이 걸린 칸에는 한글을 333자까지만 넣을 수 있습니다. UTF-16은 또 다른 담는 방식으로, 대부분의 글자를 2바이트 한 덩어리로 적고 이모지처럼 큰 번호는서로게이트라 부르는 두 덩어리로 나눕니다. 자바스크립트의 "😀".length가 2인 이유가 이것입니다. 번호(코드포인트)는 하나인데 담는 방식에 따라 조각 수가 달라지는 것이므로, 세 값을 나란히 보면 원인을 찾기 쉽습니다.

보이지 않는 문자가 왜 문제인가

화면에는 아무것도 없어 보이지만 실제로는 들어 있는 문자가 있습니다. 웹페이지·PDF·엑셀·메신저에서 글을 복사하면 줄바꿈 없는 공백(U+00A0), 제로 폭 공백(U+200B), 파일 앞머리의 BOM(U+FEFF), 한글 입력기의 전각 공백(U+3000)이 함께 따라옵니다. 이들은 눈으로 구별할 수 없는데 컴퓨터에게는 전혀 다른 문자라서, 이름이 같아 보이는 값이 데이터베이스에서 서로 다른 값이 되고, 숫자 앞에 BOM이 붙어 계산이 되지 않고, 찾기·바꾸기와 정규식이 조용히 실패합니다. 오른쪽부터 쓰기 강제 문자(U+202E)는 뒤따르는 글을 거꾸로 보이게 해 파일 이름을 위장하는 데 악용되기도 합니다. 위 결과 칸은 이런 문자를 찾아 몇 번째 글자인지, 몇 줄 몇 칸인지까지 알려 줍니다.

코드이름무엇이 문제인가
U+00A0줄바꿈 없는 공백 (NBSP)보통 공백처럼 보이지만 다른 문자라 검색·비교·trim()이 실패합니다. 워드·한글·웹페이지 복사에서 가장 흔합니다.
U+200B제로 폭 공백 (ZWSP)폭이 0인데 글자 수에는 들어갑니다. 줄바꿈 위치를 지정하려고 넣지만 복사하면 그대로 따라옵니다.
U+200D제로 폭 결합자 (ZWJ)폭이 0입니다. 가족 이모지처럼 이모지를 잇는 데 정상적으로 쓰이지만, 글자 사이에 숨어 있으면 문제입니다.
U+FEFFBOM / 제로 폭 줄바꿈 없는 공백 (U+FEFF)파일 맨 앞의 인코딩 표시입니다. CSV 첫 칸 이름이나 숫자 앞에 남으면 값이 달라지고 Number()가 NaN이 됩니다.
U+3000전각 공백 (한글·일본어 입력기)한글 입력 상태에서 스페이스를 눌러 생깁니다. 일반 공백보다 넓고 다른 문자입니다.
U+202E오른쪽부터 쓰기 강제 (RLO)뒤따르는 글이 거꾸로 보입니다. 파일 이름을 "txt.exe" → "exe.txt"처럼 위장하는 데 악용됩니다.
U+00AD소프트 하이픈줄 끝에서만 - 로 보입니다. 단어 중간에 숨어 검색이 안 되게 만듭니다.
U+2060단어 결합자 (WJ)폭이 0입니다. 줄바꿈을 막으려고 넣지만 눈에 보이지 않습니다.
U+202F좁은 줄바꿈 없는 공백 (NNBSP)좁은 공백입니다. 일반 공백과 달라 검색·비교가 실패합니다.
U+2028줄 구분자 (LS)JSON·자바스크립트 문자열에서 문법 오류를 일으켰던 문자입니다.
U+FE0F이모지 모양 선택자 (VS16)앞 문자를 이모지로 그리게 하는 폭 0 문자입니다. 이모지에서는 정상입니다.

코드를 적는 여러 가지 방법

아래 표기는 모두 알아봅니다. 접두사가 없는 값은 a~f가 섞여 있으면 16진수, 숫자뿐이면 10진수로 읽습니다.

이렇게 적어도 됩니다설명
U+AC00유니코드 표준 표기 (대소문자 상관없음)
0xAC0016진수
4403210진수
가HTML 10진 참조
가HTML 16진 참조
&HTML 이름 참조
\uAC00자바스크립트·자바 이스케이프
\u{1F600}자바스크립트 코드포인트 이스케이프
0xEA 0xB0 0x80UTF-8 바이트 (자동 판별)
%EA%B0%80주소의 퍼센트 인코딩
D83D DE00UTF-16 코드유닛 (서로게이트 짝)

자주 쓰는 문자 코드

설명코드포인트10진수UTF-8HTML 엔티티
영문 대문자 AU+00416541A
영문 소문자 aU+00619761a
숫자 0U+003048300
공백 (스페이스)U+00203220 
줄바꿈 (LF)U+000A100A

한글 첫 음절 가U+AC0044,032EA B0 80가
한글 마지막 음절 힣U+D7A355,203ED 9E A3힣
한글 호환 자모 ㄱU+313112,593E3 84 B1ㄱ
한자 漢U+6F2228,450E6 BC A2漢
원화 기호U+20A98,361E2 82 A9₩
줄표 (em dash)U+20148,212E2 80 94—
웃는 얼굴 이모지U+1F600128,512F0 9F 98 80😀

아스키표 (0~127)

아스키는 1963년에 정해진 7비트 부호표로, 지금도 유니코드 앞머리와 값이 같습니다. 0~31과 127은 화면에 그려지지 않는 제어 문자여서 글자 대신 약어로 적습니다. 대문자와 소문자는 정확히 32 차이가 나므로(A=65, a=97) 32를 더하거나 빼면 대소문자를 바꿀 수 있고, 숫자 문자는 48부터 시작하므로 48을 빼면 숫자 값이 됩니다.

인쇄 가능한 문자 (32~126)

10진16진8진문자설명
3220040(공백)공백 (스페이스)
3321041!느낌표
3422042"쌍따옴표
3523043#샵·해시
3624044$달러
3725045%퍼센트
3826046&앰퍼샌드
3927047'작은따옴표
4028050(여는 소괄호
4129051)닫는 소괄호
422A052*별표
432B053+더하기
442C054,쉼표
452D055-하이픈·빼기
462E056.마침표
472F057/슬래시
48300600숫자
49310611숫자
50320622숫자
51330633숫자
52340644숫자
53350655숫자
54360666숫자
55370677숫자
56380708숫자
57390719숫자
583A072:콜론
593B073;세미콜론
603C074<작다
613D075=같다
623E076>크다
633F077?물음표
6440100@골뱅이
6541101A영문자
6642102B영문자
6743103C영문자
6844104D영문자
6945105E영문자
7046106F영문자
7147107G영문자
7248110H영문자
7349111I영문자
744A112J영문자
754B113K영문자
764C114L영문자
774D115M영문자
784E116N영문자
794F117O영문자
8050120P영문자
8151121Q영문자
8252122R영문자
8353123S영문자
8454124T영문자
8555125U영문자
8656126V영문자
8757127W영문자
8858130X영문자
8959131Y영문자
905A132Z영문자
915B133[여는 대괄호
925C134\역슬래시 (한글 글꼴에서는 ₩로 보임)
935D135]닫는 대괄호
945E136^캐럿
955F137_밑줄
9660140`역따옴표 (백틱)
9761141a영문자
9862142b영문자
9963143c영문자
10064144d영문자
10165145e영문자
10266146f영문자
10367147g영문자
10468150h영문자
10569151i영문자
1066A152j영문자
1076B153k영문자
1086C154l영문자
1096D155m영문자
1106E156n영문자
1116F157o영문자
11270160p영문자
11371161q영문자
11472162r영문자
11573163s영문자
11674164t영문자
11775165u영문자
11876166v영문자
11977167w영문자
12078170x영문자
12179171y영문자
1227A172z영문자
1237B173{여는 중괄호
1247C174|수직선·파이프
1257D175}닫는 중괄호
1267E176~물결표

제어 문자 (0~31, 127)

10진16진약어이스케이프설명
000NUL\0널 문자 (문자열 끝 표시)
101SOH-헤딩 시작
202STX-본문 시작
303ETX-본문 끝 (Ctrl+C)
404EOT-전송 끝 (Ctrl+D)
505ENQ-조회
606ACK-응답 확인
707BEL\a경고음
808BS\b백스페이스
909HT\t수평 탭 (Tab)
100ALF\n줄바꿈 (유닉스·맥·웹)
110BVT\v수직 탭
120CFF\f폼 피드 (쪽 넘김)
130DCR\r캐리지 리턴 (윈도우는 CR+LF)
140ESO-시프트 아웃
150FSI-시프트 인
1610DLE-전송 제어 탈출
1711DC1-장치 제어 1 (XON)
1812DC2-장치 제어 2
1913DC3-장치 제어 3 (XOFF)
2014DC4-장치 제어 4
2115NAK-부정 응답
2216SYN-동기 대기
2317ETB-전송 블록 끝
2418CAN-취소
2519EM-매체 끝
261ASUB-치환 (윈도우 파일 끝, Ctrl+Z)
271BESC\e이스케이프 (ANSI 색 코드 시작)
281CFS-파일 구분자
291DGS-그룹 구분자
301ERS-레코드 구분자
311FUS-단위 구분자
1277FDEL-삭제 (천공 카드의 전부 구멍)

알아 두기

자주 묻는 질문

U+AC00 표기에서 U+ 뒤에 붙는 값은 무엇인가요?

유니코드가 글자마다 하나씩 붙여 둔 번호(코드포인트)를 16진수로 적은 것입니다. U+AC00은 10진수로 44032이고 한글 음절 "가"를 가리킵니다. 글꼴이나 저장 방식이 달라져도 이 번호는 바뀌지 않으므로, 글자가 깨졌을 때 원래 무엇이었는지 확인하는 기준이 됩니다.

코드포인트 개수와 화면에 보이는 글자 개수가 왜 다르게 나오나요?

한 글자처럼 보이는 것이 여러 코드포인트로 이루어질 수 있기 때문입니다. é는 e와 악센트(U+0301) 두 개로 적을 수도 있고, 가족 이모지는 사람 이모지 세 개를 제로 폭 결합자(U+200D)로 이은 다섯 개입니다. 이 도구는 표를 코드포인트 한 개당 한 줄로 보여 주고, 같은 글자에 속한 줄은 같은 번호로 묶어 표시합니다.

눈에 보이지 않는 문자가 섞여 값 비교가 실패하는 일은 왜 생기나요?

폭이 없거나 일반 공백이 아닌 문자가 섞여 있을 때 그렇습니다. 웹·워드에서 복사하면 줄바꿈 없는 공백(U+00A0), 제로 폭 공백(U+200B), 파일 앞머리의 BOM(U+FEFF)이 함께 붙어 옵니다. 아래 "보이지 않는 문자" 칸이 몇 번째 글자에 무엇이 있는지 알려 주고, 한 번에 정리하는 단추도 있습니다.

아스키 코드는 유니코드와 어떻게 이어지나요?

아스키 0~127은 유니코드 U+0000~U+007F와 값이 완전히 같고, UTF-8에서도 1바이트로 저장됩니다. 그래서 "아스키 65는 A"와 "U+0041은 A"는 같은 말입니다. 128 이상은 아스키에 없던 자리라 나라마다 다른 부호표를 쓰던 시절의 혼란을 유니코드가 정리한 것입니다.

자바스크립트에서 이모지 한 글자의 length가 2로 나오는데 어떻게 다뤄야 하나요?

UTF-16은 U+FFFF보다 큰 글자를 상위·하위 서로게이트 두 조각으로 나눠 저장하므로 length가 2입니다. text[i]로 훑거나 slice로 자르면 이모지가 반쪽으로 깨지니, [...text]나 Intl.Segmenter로 나눠야 합니다. 이 도구의 UTF-16 칸에서 그 두 조각(예: D83D DE00)을 직접 확인할 수 있습니다.

이 도구가 도움이 되었다면 공유해 주세요

계산 근거

이 계산기가 쓰는 세율·요율·기준의 출처입니다. 숫자가 맞는지 직접 확인해 보세요.

계산 결과가 이상한가요? 알려 주세요.

계산 결과는 참고용이며 법적 효력이 없습니다.

다른 도구