Question

Je suis en train de créer un programme de remise à niveau pour VB.net, et j'ai pensé que je pourrais aussi bien lui faire faire quelque chose que je dois faire beaucoup de toute façon :Convertissez une chaîne d'entrée en UTF-16LE puis en Base64.

Maintenant, en PHP, je peux le faire comme ceci :

<?php
$UTF8_String = "example string"; 
$UTF16_String = mb_convert_encoding($UTF8_String,"UTF-16LE","UTF-8");
$base64_encoded = base64_encode($UTF16_String);
echo $base64_encoded;

Doux et simple.

... mais dans vb.net, je n'arrive pas à comprendre comment récupérer la chaîne

Dim strInput = inputBox.Text

convertissez-le en UTF-16LE (ce doit être UTF-16LE), puis convertissez la chaîne résultante en Base64.

Merci!

Modifier:Le code de Gserg et Steven fonctionne aussi bien et il est utile de voir deux méthodes de conversion de texte :Un avec un codage spécifiable et un avec Unicode.La réponse de Steven est plus complète pour le moment, je l'accepterai donc.Merci!

Était-ce utile?

La solution

Malheureusement, UTF-16LE dans .NET est simplement appelé "Unicode" (ID de page de codes 1200).Ainsi, l'objet de codage approprié à utiliser pour UTF-16LE est Encoding.Unicode.La première étape consiste à obtenir un tableau d'octets pour la représentation UTF-16LE de la chaîne, comme ceci :

Dim bytes() As Byte = Encoding.Unicode.GetBytes(inputBox.Text)

Ensuite, vous pouvez convertir ces octets en chaîne Base64 en utilisant le Convert classe, comme ceci :

Dim base64 As String = Convert.ToBase64String(bytes)

Le Encoding class possède des propriétés publiques pour plusieurs des objets de codage les plus courants (par ex. Unicode, UTF8, UTF7).Toutefois, si à l'avenir vous devez utiliser un objet de codage moins courant, vous pouvez l'obtenir en utilisant le Encoding.GetEncoding méthode.Cette méthode prend soit un ID de page de codes, soit un nom.La liste des pages de codes prises en charge se trouve dans le tableau sur cette page du MSDN.

Autres conseils

Dim b = Text.Encoding.GetEncoding("UTF-16LE").GetBytes(inputBox.Text)
Dim base64 = Convert.ToBase64String(b)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top