Charger un fichier
  1. base64hub
  2. Outils texte
  3. UTF-16 en Base64

UTF-16 en Base64 : encoder du texte UTF-16LE ou UTF-16BE

Le texte est converti en octets UTF-16 little-endian, le format qu’utilisent Windows et .NET pour les chaînes, puis encodé en Base64. Passez le jeu de caractères sur UTF-16BE pour les systèmes big-endian.

Gratuit sans inscription, sans limites Local rien n'est envoyé LE / BE ordre des octets au choix, sans BOM Mis à jour 27 oct. 2026
Entrée 0 BSortie 0 BTaille –

Traité dans votre navigateur. Cette page ne peut envoyer vos données nulle part – comment le savons-nous

Comment encoder du texte en Base64 UTF-16

  1. Saisissez ou collez votre texte dans Entrée · texte. Jeu de caractères est préréglé sur UTF-16LE.
  2. Copiez le Base64 depuis Sortie · Base64. Le chiffre Entrée indique le nombre d’octets UTF-16, soit le double de la longueur d’un texte anglais simple.
  3. Pour un destinataire big-endian, passez Jeu de caractères sur UTF-16BE.
  4. Inverser redécode le résultat pour une vérification rapide ; Base64 en UTF-16 est le décodeur dédié.

UTF-16LE ou UTF-16BE

UTF-16 stocke chaque caractère sur une ou deux unités de code de 16 bits. Le little-endian écrit l’octet de poids faible en premier, le big-endian l’octet de poids fort. Windows et .NET utilisent le little-endian ; l’encodeur UTF-16 de Java et de nombreux formats réseau utilisent le big-endian.

TexteOctets UTF-16LEBase64 UTF-16LEBase64 UTF-16BE
Hi48 00 69 00SABpAA==AEgAaQ==
Hello10 octetsSABlAGwAbABvAA==AEgAZQBsAGwAbw==
€AC 20rCA=IKw=
👋3D D8 4B DCPdhL3A==2D3cSw==

Les caractères hors du plan multilingue de base, dont tous les emoji, occupent deux unités de code appelées paire de substitution (surrogate pair). 👋 (U+1F44B) devient D83D DC4B, ce qui donne les 4 octets de la dernière ligne.

Comme chaque lettre ASCII est accompagnée d’un octet nul, le Base64 UTF-16 d’un texte anglais est parsemé de caractères A. Une chaîne inconnue qui présente ce motif mérite d’être décodée en UTF-16.

Où l’on utilise le Base64 UTF-16

  • PowerShell -EncodedCommand. powershell -EncodedCommand RwBlAHQALQBEAGEAdABlAA== exécute Get-Date. Une cause fréquente d’échec de ces commandes est un script encodé en UTF-8. L’outil PowerShell EncodedCommand ajoute le préfixe de commande, avertit de la limite de longueur de cmd.exe et décode aussi les commandes trouvées dans les logs.
  • Code .NET. Encoding.Unicode en C# correspond à UTF-16LE : Convert.ToBase64String(Encoding.Unicode.GetBytes(s)) produit donc la même sortie que cette page.
  • Données Windows. Les chaînes du registre, des colonnes NVARCHAR converties en binaire dans SQL Server et de nombreuses API Windows sont en UTF-16LE.

Marques d’ordre des octets

Cet outil n’écrit aucune marque d’ordre des octets, ce que veulent PowerShell et la plupart des API. Certaines bibliothèques en ajoutent une automatiquement :

SourcePremiers octetsBase64 de Hi
Cet outil, UTF-16LE48 00SABpAA==
Python "Hi".encode("utf-16")FF FE 48 00//5IAGkA
Java "Hi".getBytes(UTF_16)FE FF 00 48/v8ASABp

Si votre Base64 doit correspondre à l’un d’eux, encodez avec un ordre des octets explicite dans le code, comme ci-dessous.

UTF-16 en Base64 dans le code

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'))

En Python, utilisez utf-16-le plutôt que utf-16, sauf si vous voulez le BOM. D’autres exemples : Python, Node.js.

FAQ

Pourquoi PowerShell exige-t-il du Base64 en UTF-16LE ?

powershell -EncodedCommand attend le Base64 des octets UTF-16LE du script, car c’est ainsi que Windows stocke les chaînes en interne. Un Base64 en UTF-8 se décode en caractères erronés et la commande échoue. L’outil PowerShell EncodedCommand construit la ligne de commande complète.

Quelle différence entre UTF-16LE et UTF-16BE ?

L’ordre des deux octets de chaque unité de code. H s’écrit 48 00 en little-endian et 00 48 en big-endian : Hi s’encode donc en SABpAA== ou en AEgAaQ==.

La sortie commence-t-elle par une marque d'ordre des octets (BOM) ?

Non, seuls les octets du texte lui-même sont encodés. Le codec "utf-16" de Python et le charset UTF_16 de Java en ajoutent une, c’est pourquoi leur Base64 commence par //5 ou /v8.

Pourquoi le Base64 UTF-16 est-il si long ?

UTF-16 utilise au moins 2 octets par caractère : un texte anglais double de taille avant même que Base64 ajoute son tiers. Hello fait 8 caractères Base64 en UTF-8 et 16 en UTF-16.