na.to.
KO EN JA
🔤

글자가 깨지는 이유

한글이 물음표나 이상한 기호로 보일 때가 있습니다. 무엇이 어긋난 것인지.

⏱ 읽는 데 약 2분 ·정보 업데이트 2026-09-22

📋 기본 정보

핵심
글자는 숫자로 저장되고, 그 숫자를 읽는 약속이 인코딩이다
깨짐
저장할 때와 읽을 때 다른 약속을 쓰면 깨진다
UTF-8
글자마다 차지하는 바이트 수가 다르다
주의
글자 수와 바이트 수는 같지 않다

글자는 숫자다

컴퓨터는 글자를 그림으로 저장하지 않고 숫자로 저장합니다. 어떤 숫자가 어떤 글자인지 정해 둔 표가 필요한데, 이 표를 정한 약속이 문자 인코딩입니다. 초기에는 영어권에서 만든 작은 표만 있었고, 각 나라가 자기 글자를 넣은 표를 따로 만들면서 표가 여러 개로 갈라졌습니다.

깨짐이 일어나는 구조

파일을 저장할 때 쓴 표와 열 때 쓴 표가 다르면, 같은 숫자를 다른 글자로 읽게 됩니다. 그래서 한글이 알 수 없는 기호나 물음표로 보입니다. 내용이 손상된 것이 아니라 잘못 해석된 것이므로, 맞는 인코딩으로 다시 열면 대개 원래대로 보입니다.

유니코드가 해결한 것

유니코드는 세상의 모든 글자에 고유한 번호를 붙인 하나의 표입니다. 표가 하나면 나라마다 다른 표를 쓰는 문제가 사라집니다. 그 번호를 실제 파일에 몇 바이트로 적을지는 또 다른 문제이고, 그것을 정한 방식 중 가장 널리 쓰이는 것이 UTF-8입니다.

  • 유니코드: 글자마다 번호를 정한 표
  • UTF-8: 그 번호를 바이트로 적는 방식
  • 영문·숫자는 1바이트, 한글은 보통 3바이트
  • 이모지는 4바이트를 쓰기도 한다

글자 수와 바이트 수

UTF-8에서는 글자마다 차지하는 바이트가 달라서, 글자 수와 바이트 수가 일치하지 않습니다. 한글 10자는 30바이트쯤 됩니다. 글자 수 제한이 있는 입력란에서 한글이 영문보다 빨리 한도에 걸리는 경우, 그 제한이 바이트 기준일 가능성이 큽니다. 어떤 기준인지 모르면 짧게 쓰는 편이 안전합니다.

주소창에 보이는 퍼센트 기호

웹 주소에는 원래 영문과 일부 기호만 쓸 수 있습니다. 그래서 한글이나 공백은 퍼센트 기호와 두 자리 16진수로 바꿔 적습니다. 주소를 복사했더니 알 수 없는 문자열이 붙어 오는 것이 이것이고, 깨진 것이 아니라 규칙대로 변환된 상태입니다.

🌍 검색엔진에서 더 찾아보기

아래 버튼을 누르면 해당 검색엔진에서 이 키워드로 바로 검색합니다

🔗 같은 분류의 다른 항목

🧰 관련 서비스

봇트레이드 유튜브 채널