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

UTF-16을 Base64로: UTF-16LE 또는 UTF-16BE 텍스트 인코딩

텍스트를 Windows와 .NET이 문자열에 쓰는 UTF-16 리틀 엔디언 바이트로 바꾼 뒤 Base64로 인코딩합니다. 빅 엔디언 시스템용이라면 문자 인코딩을 UTF-16BE로 바꾸세요.

무료 가입 없음, 제한 없음 로컬 업로드 없음 LE / BE 바이트 순서 선택 가능, BOM 없음 업데이트 2026. 10. 27.
입력 0 B출력 0 B크기 –

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

텍스트를 UTF-16 Base64로 인코딩하는 방법

  1. 입력 · 텍스트에 텍스트를 입력하거나 붙여넣으세요. 문자 인코딩은 UTF-16LE로 미리 설정되어 있습니다.
  2. 출력 · Base64에서 Base64를 복사하세요. 입력 수치는 UTF-16 바이트 수를 보여 주며, 일반 영문 텍스트 길이의 두 배입니다.
  3. 빅 엔디언을 쓰는 쪽이라면 문자 인코딩을 UTF-16BE로 바꾸세요.
  4. 바꾸기는 빠른 확인을 위해 결과를 다시 디코딩합니다. 전용 디코더는 Base64를 UTF-16으로입니다.

UTF-16LE와 UTF-16BE

UTF-16은 각 문자를 16비트 코드 유닛 하나 또는 두 개로 저장합니다. 리틀 엔디언은 하위 바이트를, 빅 엔디언은 상위 바이트를 먼저 씁니다. Windows와 .NET은 리틀 엔디언을, Java의 UTF-16 인코더와 많은 네트워크 형식은 빅 엔디언을 씁니다.

텍스트UTF-16LE 바이트UTF-16LE Base64UTF-16BE Base64
Hi48 00 69 00SABpAA==AEgAaQ==
Hello10바이트SABlAGwAbABvAA==AEgAZQBsAGwAbw==
€AC 20rCA=IKw=
👋3D D8 4B DCPdhL3A==2D3cSw==

기본 다국어 평면(BMP) 밖의 문자는 모든 이모지를 포함해 서로게이트 쌍이라 부르는 코드 유닛 두 개를 차지합니다. 👋(U+1F44B)는 D83D DC4B가 되며, 이것이 마지막 행의 4바이트입니다.

ASCII 영문자마다 0 바이트가 짝지어지므로 영어 텍스트의 UTF-16 Base64에는 A 문자가 군데군데 보입니다. 정체를 모르는 문자열에 이런 패턴이 있다면 UTF-16으로 디코딩해 볼 만합니다.

UTF-16 Base64가 쓰이는 곳

  • PowerShell -EncodedCommand. powershell -EncodedCommand RwBlAHQALQBEAGEAdABlAA==는 Get-Date를 실행합니다. 이런 명령이 실패하는 흔한 이유는 스크립트를 UTF-8로 인코딩했기 때문입니다. PowerShell EncodedCommand 도구는 명령 접두사를 붙이고, cmd.exe의 길이 제한을 경고하며, 로그에서 찾은 명령도 디코딩합니다.
  • .NET 코드. C#의 Encoding.Unicode는 UTF-16LE이므로 Convert.ToBase64String(Encoding.Unicode.GetBytes(s))는 이 페이지와 같은 출력을 냅니다.
  • Windows 데이터. 레지스트리의 문자열, SQL Server에서 바이너리로 캐스트한 NVARCHAR 컬럼, 많은 Windows API의 문자열이 UTF-16LE입니다.

바이트 순서 표시(BOM)

이 도구는 바이트 순서 표시를 쓰지 않으며, PowerShell과 대부분의 API가 원하는 것도 그렇습니다. 일부 라이브러리는 자동으로 BOM을 붙입니다.

출처첫 바이트Hi의 Base64
이 도구, UTF-16LE48 00SABpAA==
Python "Hi".encode("utf-16")FF FE 48 00//5IAGkA
Java "Hi".getBytes(UTF_16)FE FF 00 48/v8ASABp

Base64가 이 중 하나와 일치해야 한다면 아래처럼 코드에서 바이트 순서를 명시해 인코딩하세요.

코드에서 UTF-16을 Base64로

import base64

base64.b64encode("Get-Date".encode("utf-16-le")).decode()   # 'RwBlAHQALQBEAGEAdABlAA=='
base64.b64encode("Hi".encode("utf-16-be")).decode()         # 'AEgAaQ=='
// Node.js has a little-endian codec only
Buffer.from("Get-Date", "utf16le").toString("base64");   // "RwBlAHQALQBEAGEAdABlAA=="
[Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Get-Date'))

BOM이 필요한 게 아니라면 Python에서는 utf-16 대신 utf-16-le를 쓰세요. 더 많은 예시: Python, Node.js.

자주 묻는 질문

PowerShell에는 왜 UTF-16LE Base64가 필요한가요?

powershell -EncodedCommand는 스크립트의 UTF-16LE 바이트를 Base64로 인코딩한 값을 기대합니다. Windows가 내부적으로 문자열을 그렇게 저장하기 때문입니다. UTF-8 Base64는 엉뚱한 문자로 디코딩되어 명령이 실패합니다. PowerShell EncodedCommand 도구가 명령줄 전체를 만들어 줍니다.

UTF-16LE와 UTF-16BE의 차이는 무엇인가요?

각 코드 유닛을 이루는 두 바이트의 순서입니다. H는 리틀 엔디언에서 48 00, 빅 엔디언에서 00 48이므로 Hi는 SABpAA== 또는 AEgAaQ==로 인코딩됩니다.

출력이 바이트 순서 표시(BOM)로 시작하나요?

아니요. 텍스트 자체의 바이트만 인코딩됩니다. Python의 "utf-16" 코덱과 Java의 UTF_16 문자 집합은 BOM을 붙이므로, 그 Base64는 //5나 /v8로 시작합니다.

UTF-16 Base64는 왜 이렇게 긴가요?

UTF-16은 문자당 최소 2바이트를 쓰므로, 영문 텍스트는 Base64가 3분의 1을 더하기 전에 이미 두 배가 됩니다. Hello는 UTF-8로 Base64 8자, UTF-16으로 16자입니다.