我拼凑了一个程序作为VB.net的刷新程序,我想我也可以让它做一些我无论如何都必须做的事情:将输入字符串转换成UTF16LE,然后再转换成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;
甜蜜而简单。
...but在vb.net中,我不知道如何从
Dim strInput = inputBox.Text
将其转换为UTF-16LE (必须为UTF-16LE),然后将结果字符串转换为Base64。
谢谢!
编辑: Gserg和Steven的代码都可以很好地工作,这有助于了解两种转换文本的方法:一种使用指定编码,另一种使用Unicode。Steven的答案在这个时候更完整,所以我接受它。谢谢!
发布于 2014-01-09 22:54:32
不幸的是,.NET中的UTF-16LE被简单地称为"Unicode“(代码页ID1200)。因此,用于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
类具有几个最常见的编码对象(例如Unicode
、UTF8
、UTF7
)的公共属性。但是,如果将来需要使用不太常用的编码对象,则可以使用Encoding.GetEncoding
方法来获得它。该方法接受代码页ID或名称。支持的代码页列表可以在MSDN的this page上的表中找到。
发布于 2014-01-09 22:42:15
Dim b = Text.Encoding.GetEncoding("UTF-16LE").GetBytes(inputBox.Text)
Dim base64 = Convert.ToBase64String(b)
https://stackoverflow.com/questions/21023165
复制相似问题