파일 업로드
  1. base64hub
  2. 텍스트 도구
  3. Base64 → UTF-8

Base64를 UTF-8로: 유니코드 텍스트로 디코딩

Base64를 붙여넣고 UTF-8 텍스트로 읽으세요. 바이트가 올바른 UTF-8이 아니면 문제 지점을 �로 표시하고 알려 주므로, 문자 인코딩이 틀렸거나 문자열이 잘린 경우를 바로 알 수 있습니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 업데이트 2026. 10. 27.
입력 0 B출력 0 B크기 –

브라우저에서 처리됩니다. 이 페이지는 데이터를 어디로도 보낼 수 없습니다 – 확인 방법

Base64를 UTF-8로 디코딩하는 방법

  1. 입력 · Base64에 Base64를 붙여넣으세요. 문자 인코딩은 UTF-8로 미리 설정되어 있습니다.
  2. 출력 · 텍스트에서 결과를 읽으세요. 상태 표시줄에 바이트 수와 감지된 내용 유형이 나타납니다.
  3. 상태 표시줄에 “일부 바이트가 올바른 UTF-8이 아닙니다"라고 나오면 텍스트가 다른 문자 인코딩입니다. 자동 감지, Windows-1252, UTF-16LE를 시도하고, 한글이 깨진다면 EUC-KR을 선택해 보세요.
  4. 출력 복사는 텍스트를 복사하고, 다운로드는 디코딩된 바이트를 그대로 저장합니다.

반대 방향으로 인코딩하려면 UTF-8을 Base64로를 사용하세요.

예시

Base64UTF-8로 디코딩한 결과보여 주는 것
8J+YgA==😀이모지 하나, 4바이트
4oKs€3바이트, 패딩 불필요
bmHDr3ZlIGNhZsOpnaïve café악센트 문자, 각 2바이트
77u/SGk=Hi5바이트: 바이트 순서 표시 뒤에 Hi
Y2Fm6Q==caf�E9는 Latin-1의 é이며 UTF-8에서는 잘못된 바이트
8J+Y�4바이트 중 3바이트에서 잘린 이모지
Y2Fmw4PCqQ==café이미 깨진 텍스트의 올바른 UTF-8

마지막 세 행은 아래에서 다루는 문제입니다. 잘못된 문자 인코딩, 잘린 문자열, 인코딩 전에 이미 깨진 텍스트입니다.

잘못된 UTF-8과 대체 문자

UTF-8에는 엄격한 규칙이 있습니다. 7F보다 큰 바이트는 정해진 패턴을 따르는 2, 3, 4바이트 시퀀스의 일부여야 합니다. 패턴을 깨는 바이트는 UTF-8로 읽을 수 없습니다. 디코더는 깨진 시퀀스를 하나씩 U+FFFD(�)로 바꾸고 “일부 바이트가 올바른 UTF-8이 아닙니다” 안내를 덧붙입니다. 아무것도 몰래 버리지 않으므로 � 하나하나가 문제가 있는 정확한 위치를 가리킵니다.

거의 모든 경우는 두 가지 원인 중 하나입니다.

  • 다른 문자 인코딩. Y2Fm6Q==에는 63 61 66 E9가 들어 있는데, ISO-8859-1과 Windows-1252에서는 café입니다. 문자 인코딩을 바꾸면 텍스트가 나타납니다. 한글 텍스트가 깨진다면 EUC-KR로 저장된 데이터일 수 있습니다. Base64 디코딩 페이지에 문자 인코딩별 흔한 증상이 정리되어 있습니다.
  • 잘린 문자열. 데이터베이스의 열 길이 제한이나 로그 한 줄 길이 때문에 Base64가 잘리면 마지막 문자의 바이트 일부가 사라질 수 있습니다. 8J+YgA==는 완전한 이모지이고, 8J+Y는 같은 이모지에서 마지막 바이트가 빠진 것이라 � 하나로 디코딩됩니다. 원본에서 전체 값을 찾아보세요.

이중 인코딩된 텍스트 (é와 ’)

출력에 é 대신 é, ü 대신 ü, 둥근 아포스트로피 대신 ’가 보인다면 디코더 잘못이 아닙니다. 이전 어딘가에서 UTF-8 바이트를 Windows-1252로 읽은 뒤 다시 UTF-8로 저장하면서 특수 문자 하나가 엉뚱한 문자 두세 개로 바뀐 것입니다. Base64는 그 손상된 텍스트를 충실히 담고 있을 뿐입니다. Y2Fmw4PCqQ==는 7바이트 문자열 café의 올바른 UTF-8입니다.

이런 문자열은 실수를 거꾸로 되돌려 코드로 복구할 수 있는 경우가 많습니다. 텍스트를 Windows-1252로 인코딩한 다음 그 바이트를 UTF-8로 디코딩하면 됩니다. 근본적인 해결은 데이터를 기록한 시스템에서 해야 합니다.

바이트 순서 표시

일부 편집기, 특히 Windows의 편집기는 UTF-8 파일 맨 앞에 바이트 순서 표시인 EF BB BF를 넣습니다. 그러면 Base64로는 파일이 77u/로 시작합니다. 디코더는 이 표시를 알아보고 텍스트에서 빼지만, 다운로드는 바이트를 원래대로 유지합니다. 코드에서는 직접 제거해야 할 수도 있습니다.

import base64

raw = base64.b64decode("77u/SGk=")
raw.decode("utf-8")       # '\ufeffHi'
raw.decode("utf-8-sig")   # 'Hi'

base64.b64decode("Y2Fm6Q==").decode("utf-8", errors="replace")   # 'caf�'

errors="replace"가 없으면 Python은 잘못된 바이트에서 UnicodeDecodeError를 발생시킵니다. JavaScript에서 new TextDecoder("utf-8", { fatal: true })는 �를 넣는 대신 TypeError를 던지며, 기본 디코더는 이 도구처럼 BOM을 제거합니다. 자세한 내용은 Python에서 Base64와 JavaScript에서 Base64에 있습니다.

자주 묻는 질문

Base64를 UTF-8 문자열로 디코딩하려면 어떻게 하나요?

Base64를 바이트로 디코딩한 다음 그 바이트를 UTF-8로 해석합니다. 위 도구는 이 과정을 한 번에 처리합니다. Python에서는 base64.b64decode(s).decode("utf-8"), 브라우저에서는 new TextDecoder().decode(bytes)입니다.

출력에 나오는 � 문자는 무슨 뜻인가요?

U+FFFD, 대체 문자입니다. 디코더는 바이트가 올바른 UTF-8을 이루지 못하는 곳마다 이 문자를 넣습니다. 대개 텍스트가 다른 문자 인코딩으로 저장되었거나 Base64가 잘렸다는 뜻입니다.

디코딩한 텍스트 맨 앞에 보이지 않는 문자가 있는 이유는 무엇인가요?

원본에 UTF-8 바이트 순서 표시(BOM)가 있었을 가능성이 높습니다(Base64가 77u/로 시작). 이 도구는 BOM을 제거하지만, Python의 일반 .decode("utf-8")는 \ufeff로 남겨 둡니다. 제거하려면 "utf-8-sig"를 쓰세요.

내 Base64에는 UTF-8을 선택하면 되나요?

대부분 그렇습니다. JSON, 웹, Linux, 최신 API는 모두 UTF-8을 씁니다. 오래된 Windows 프로그램이나 .NET, PowerShell 문자열에서 온 데이터는 Windows-125x나 UTF-16일 수 있고, 한국어 레거시 시스템의 데이터는 EUC-KR일 수 있습니다.