【问题标题】:How can I convert a string to UTF-16LE and then to Base64?如何将字符串转换为 UTF-16LE,然后再转换为 Base64?
【发布时间】:2018-08-10 06:32:25
【问题描述】:

我正在编写一个程序作为 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。史蒂文的回答此时更完整,所以我会接受它。谢谢!

【问题讨论】:

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


    【解决方案1】:

    不幸的是,.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 上的表格中找到。

    【讨论】:

      【解决方案2】:
      Dim b = Text.Encoding.GetEncoding("UTF-16LE").GetBytes(inputBox.Text)
      Dim base64 = Convert.ToBase64String(b)
      

      【讨论】:

      • 非常感谢!我确实必须在第一行包含System.Text 部分,由于某种原因Imports System.Text 不起作用。换句话说,你只是让我的一天更美好。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 2019-10-16
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 2011-05-18
      相关资源
      最近更新 更多