如何将字符串转换为UTF-16LE然后转换为Base64?

时间:2014-01-09 14:38:04

标签: vb.net string base64 utf-16le

我正在把一个程序放在一起作为VB.net的复习,我想我也可以做一些我必须要做的事情:将输入字符串转换为UTF-16LE然后转换为Base64

现在,在PHP中,我可以这样做:

<?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;

甜蜜而简单。

...但在vb.net中,我无法弄清楚如何从

获取字符串

Dim strInput = inputBox.Text

将其转换为UTF-16LE(必须为UTF-16LE),然后将生成的字符串转换为Base64。

谢谢!

编辑:Gserg和Steven的代码同样运作良好,它有助于看到两种转换文本的方法:一种具有可指定的编码,另一种具有Unicode。史蒂文的答案在这个时候更完整,所以我会接受它。谢谢!

2 个答案:

答案 0 :(得分:2)

遗憾的是,.NET中的UTF-16LE简称为“Unicode”(代码页ID 1200)。因此,用于UTF-16LE的正确编码对象是Encoding.Unicode。第一步是获取字符串的UTF-16LE表示的字节数组,如下所示:

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

然后,您可以使用Convert类将这些字节转换为Base64字符串,如下所示:

Dim base64 As String = Convert.ToBase64String(bytes)

Encoding类具有几个最常见编码对象的公共属性(例如UnicodeUTF8UTF7)。但是,如果将来需要使用不太常见的编码对象,则可以使用Encoding.GetEncoding方法获取它。该方法采用代码页ID或名称。支持的代码页列表可以在MSDN的this page表中找到。

答案 1 :(得分:1)

Dim b = Text.Encoding.GetEncoding("UTF-16LE").GetBytes(inputBox.Text)
Dim base64 = Convert.ToBase64String(b)