Загрузить файл
  1. base64hub
  2. Текстовые инструменты
  3. Base64 в UTF-16

Base64 в UTF-16: декодирование текста UTF-16LE и BE

Вставьте Base64 с текстом в UTF-16 и прочитайте его как обычную строку. По умолчанию выбран UTF-16LE, стандарт Windows и .NET; если в результате появились китайские иероглифы, переключитесь на UTF-16BE.

Бесплатно без регистрации и ограничений Локально ничего не загружается Обновлено 27 окт. 2026 г.
Ввод 0 BРезультат 0 BРазмер –

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как декодировать Base64 в UTF-16

  1. Вставьте Base64 в поле Ввод · Base64. В поле Кодировка уже выбран UTF-16LE.
  2. Текст появится в поле Результат · текст. В поле Похоже на обычно будет Binary: детектор считает нулевые байты признаком двоичных данных. Текстовый результат при этом правильный.
  3. Если вместо текста получилась строка иероглифов, переключите Кодировку на UTF-16BE.
  4. Если данные начинаются с метки порядка байтов, Автоопределение само выберет нужный порядок и уберёт метку.
  5. Скопировать результат копирует текст, Скачать сохраняет исходные байты.

Обратное преобразование делает страница UTF-16 в Base64.

Как узнать UTF-16 в Base64

У Base64 от UTF-16 заметный ритм. В ASCII-тексте в UTF-16 байты букв чередуются с нулевыми байтами, а нулевые биты в алфавите Base64 дают A, поэтому A встречается через каждые несколько символов:

Base64Порядок байтовРезультат
SABlAGwAbABvAA==LE, без BOMHello
AEgAZQBsAGwAbw==BE, без BOMHello
//5IAGkALE с BOM FF FEHi
/v8ASABpBE с BOM FE FFHi
RwBlAHQALQBEAGEAdABlAA==LE, без BOMGet-Date

ASCII-текст в big-endian всегда начинается с A, потому что первый байт нулевой. Строка, которая начинается с //4 или /v8, открывается меткой порядка байтов.

Порядок байтов, BOM и автоопределение

Если читать с неправильным порядком байтов, каждая пара байтов меняется местами, и английский текст превращается в иероглифы: AEgAZQBsAGwAbw==, декодированный как UTF-16LE, даёт 䠀攀氀氀漀. Данные при этом не теряются: достаточно переключить поле Кодировка.

Автоопределение надёжно распознаёт UTF-16, когда данные начинаются с BOM. Без BOM обычный ASCII-текст в UTF-16 корректен и как UTF-8 (нулевые байты там допустимы), поэтому автоматика может принять его за UTF-8 с невидимыми символами. На этой странице выбирайте UTF-16LE или UTF-16BE вручную, если в начале нет //4 или /v8.

Нечётное число байтов указывает на проблему. В SABpAAA= 5 байтов; как UTF-16LE он даёт Hi и � в конце. Значит, значение обрезано или это вообще не UTF-16.

Откуда берётся Base64 в UTF-16

Чаще всего из PowerShell. Закодированные команды вида powershell -enc SQBFAFgA... встречаются в планировщике заданий, скриптах установщиков и журналах безопасности, и Base64 в них всегда от UTF-16LE. Декодер PowerShell EncodedCommand вытаскивает значение из полной командной строки и ищет в скрипте вложенный Base64.

Base64 от UTF-16 встречается и в программах на .NET, которые вызывают Convert.ToBase64String(Encoding.Unicode.GetBytes(...)), в данных реестра и журналов событий Windows, а также в значениях NVARCHAR из SQL Server, выгруженных в двоичном виде.

Декодирование Base64 в UTF-16 в коде

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 читает big-endian. См. также Python и Node.js.

Вопросы и ответы

Как понять, что в Base64 закодирован UTF-16?

Ищите много символов A, идущих с правильной периодичностью, как в SABlAGwAbABvAA==: в UTF-16 рядом с каждой ASCII-буквой стоит нулевой байт. //4 или /v8 в начале строки означают метку порядка байтов (BOM) UTF-16.

Почему после декодирования получились китайские иероглифы?

Перепутан порядок байтов. Hello в big-endian, прочитанный как little-endian, превращается в 䠀攀氀氀漀. Переключите «Кодировку» между UTF-16LE и UTF-16BE.

Откуда символ � в конце текста?

В UTF-16 число байтов всегда чётное. Нечётное значит, что Base64 обрезан или это вовсе не UTF-16, и лишний байт превращается в символ замены.

Как декодировать PowerShell -EncodedCommand?

Значение после -EncodedCommand (или -enc) записано как Base64 от UTF-16LE, так что эта страница его декодирует. Декодер PowerShell принимает и командную строку целиком, а заодно находит вложенную полезную нагрузку.