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

Base64를 UTF-16으로: UTF-16LE/BE 텍스트 디코딩

UTF-16 텍스트가 담긴 Base64를 붙여넣고 일반 문자열로 읽으세요. 이 페이지는 Windows와 .NET의 기본값인 UTF-16LE로 시작합니다. 출력이 한자 같은 CJK 문자로 바뀌면 UTF-16BE로 전환하세요.

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

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

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

  1. 입력 · Base64에 Base64를 붙여넣으세요. 문자 인코딩은 UTF-16LE로 미리 설정되어 있습니다.
  2. 출력 · 텍스트에서 텍스트를 읽으세요. 감지기는 0 바이트를 바이너리 데이터의 신호로 보기 때문에 추정 형식 항목은 대개 바이너리라고 표시하지만, 텍스트 출력은 정상입니다.
  3. 결과가 한자 같은 CJK 문자의 나열이라면 문자 인코딩을 UTF-16BE로 바꾸세요.
  4. 데이터가 바이트 순서 표시로 시작하면 자동 감지가 알맞은 바이트 순서를 고르고 표시를 제거합니다.
  5. 출력 복사는 텍스트를 복사하고, 다운로드는 원본 바이트를 저장합니다.

반대 방향은 UTF-16을 Base64로를 참고하세요.

Base64 속 UTF-16 알아보기

UTF-16 Base64에는 눈에 보이는 리듬이 있습니다. UTF-16의 ASCII 텍스트는 글자 바이트와 0 바이트가 번갈아 나오고, 0 비트는 Base64 알파벳에서 A에 대응하므로 몇 글자마다 A가 나타납니다.

Base64바이트 순서디코딩 결과
SABlAGwAbABvAA==LE, BOM 없음Hello
AEgAZQBsAGwAbw==BE, BOM 없음Hello
//5IAGkALE, BOM FF FEHi
/v8ASABpBE, BOM FE FFHi
RwBlAHQALQBEAGEAdABlAA==LE, BOM 없음Get-Date

빅 엔디언 ASCII 텍스트는 첫 바이트가 0이므로 항상 A로 시작합니다. //4나 /v8로 시작하는 문자열은 바이트 순서 표시로 시작합니다.

바이트 순서, BOM, 자동 감지

바이트 순서를 잘못 고르면 모든 바이트 쌍이 뒤바뀌어 영어가 한자로 바뀝니다. AEgAZQBsAGwAbw==를 UTF-16LE로 디코딩하면 䠀攀氀氀漀가 나옵니다. 잃어버린 데이터는 없으며, 문자 인코딩만 바꾸면 해결됩니다.

자동 감지는 데이터가 BOM으로 시작할 때 UTF-16을 확실하게 처리합니다. BOM이 없으면 UTF-16으로 된 순수 ASCII 텍스트가 올바른 UTF-8이기도 해서(UTF-8에서도 0 바이트는 허용됨), 자동 감지가 보이지 않는 문자가 섞인 UTF-8로 착각할 수 있습니다. 이 페이지에서는 시작 부분에 //4나 /v8가 보이지 않는 한 UTF-16LE나 UTF-16BE를 직접 선택해 두세요.

바이트 수가 홀수라면 뭔가 잘못된 것입니다. SABpAAA=에는 5바이트가 들어 있고, UTF-16LE로 디코딩하면 Hi 뒤에 �가 붙습니다. 값이 잘렸거나 처음부터 UTF-16이 아닌 경우입니다.

UTF-16 Base64는 어디서 오나

가장 흔한 출처는 PowerShell입니다. powershell -enc SQBFAFgA... 같은 인코딩된 명령은 예약된 작업, 설치 스크립트, 보안 로그에 등장하며, 이 Base64는 항상 UTF-16LE입니다. PowerShell EncodedCommand 디코더는 전체 명령줄에서 값을 뽑아내고 스크립트 안의 Base64도 찾아봅니다.

그 밖에 Convert.ToBase64String(Encoding.Unicode.GetBytes(...))를 호출하는 .NET 프로그램, Windows 레지스트리와 이벤트 데이터, 바이너리로 내보낸 SQL Server NVARCHAR 값도 출처가 됩니다.

코드에서 UTF-16 Base64 디코딩하기

import base64

raw = base64.b64decode("SABlAGwAbABvAA==")
raw.decode("utf-16-le")                           # 'Hello'
base64.b64decode("/v8ASABp").decode("utf-16")     # 'Hi', byte order taken from the BOM

바이트 수가 홀수이면 Python은 UnicodeDecodeError: truncated data를 발생시킵니다.

// Node.js: little-endian only
Buffer.from("SABlAGwAbABvAA==", "base64").toString("utf16le");   // "Hello"
// Browsers and Node.js: either order
new TextDecoder("utf-16be").decode(Uint8Array.from(atob("AEgAZQBsAGwAbw=="), c => c.charCodeAt(0)));   // "Hello"

C#에서는 Encoding.Unicode.GetString(Convert.FromBase64String(s))가 UTF-16LE를 읽고, Encoding.BigEndianUnicode가 빅 엔디언을 읽습니다. Python과 Node.js도 참고하세요.

자주 묻는 질문

Base64에 UTF-16이 들어 있는지 어떻게 알 수 있나요?

SABlAGwAbABvAA==처럼 A가 일정한 간격으로 많이 나오는지 보세요. UTF-16에서는 ASCII 글자마다 0 바이트가 하나씩 붙기 때문입니다. //4나 /v8로 시작하면 UTF-16 바이트 순서 표시(BOM)입니다.

디코딩하면 한자가 나오는 이유는 무엇인가요?

바이트 순서가 뒤집혔기 때문입니다. 빅 엔디언 Hello를 리틀 엔디언으로 읽으면 䠀攀氀氀漀가 됩니다. 문자 인코딩을 UTF-16LE와 UTF-16BE 사이에서 바꾸세요.

텍스트 끝에 �가 붙는 이유는 무엇인가요?

UTF-16은 바이트 수가 짝수여야 합니다. 홀수라면 Base64가 잘렸거나 애초에 UTF-16이 아니며, 남은 바이트 하나가 대체 문자로 바뀝니다.

PowerShell -EncodedCommand는 어떻게 디코딩하나요?

-EncodedCommand(또는 -enc) 뒤의 값은 UTF-16LE Base64이므로 이 페이지에서 디코딩할 수 있습니다. PowerShell 디코더는 명령줄 전체도 받아 주고 중첩된 페이로드도 찾아냅니다.