¿Cómo puedo convertir una cadena de caracteres a UTF-16LE y, a continuación, a Base64?
Pregunta
Estoy lanzando un programa, como un repaso para VB.net y pensé que podría hacer algo de lo que tengo que hacer un montón de todos modos:Convertir una cadena de entrada en UTF-16LE y, a continuación, en Base64.
Ahora, en PHP, puedo hacerlo como este:
<?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;
Dulce y simple.
...pero en vb.net no puedo averiguar cómo llegar a la cadena de
Dim strInput = inputBox.Text
convertir a UTF-16LE (tiene que ser UTF-16LE) y, a continuación, convertir la cadena resultante a Base64.
Gracias!
Editar:Gserg y Steven código funciona igual de bien, y ayuda a ver dos métodos de conversión de texto:Uno con definibles codificación y uno con Unicode.Steven respuesta es más completa en este momento, así que lo acepto.Gracias!
Solución
UTF-16LE en .RED, por desgracia, se llama simplemente "Unicode" (código IDENTIFICADOR de página 1200).Así, la codificación correcta objeto que se usa para UTF-16LE es Encoding.Unicode
.El primer paso es obtener una matriz de bytes para el UTF-16LE representación de la cadena, como este:
Dim bytes() As Byte = Encoding.Unicode.GetBytes(inputBox.Text)
Entonces, usted puede convertir los bytes en una cadena Base64 mediante el uso de la Convert
la clase, como este:
Dim base64 As String = Convert.ToBase64String(bytes)
El Encoding
la clase tiene propiedades públicas para varios de los más comunes de codificación de objetos (por ejemplo, Unicode
, UTF8
, UTF7
).Si, en el futuro, sin embargo, es necesario utilizar un tipo menos común de codificación de objetos, se puede obtener mediante el uso de la Encoding.GetEncoding
método.Que método toma un IDENTIFICADOR de página de código o nombre.La lista de las páginas de código se puede encontrar en la tabla de la esta página de MSDN.
Otros consejos
Dim b = Text.Encoding.GetEncoding("UTF-16LE").GetBytes(inputBox.Text)
Dim base64 = Convert.ToBase64String(b)